#ZT1003. PvZ 竞赛版

PvZ 竞赛版

pvz.in/out

题目描述

小k自学编程开发了一款BT版植物大战僵尸的游戏,里面有一个植物叫做超级无敌🌽加农炮,加农炮可以秒杀攻击范围内的僵尸,当攻击范围为0时,则能杀死与他同一位置的僵尸。这个植物虽然很厉害,但也存在缺陷,一个超级无敌🌽加农炮种下去的时候可以设置击杀半径,设置好就不能变了,而击杀僵尸需要消耗阳光,消耗的阳光为设置好的击杀半径的平方和。由于作者丧心病狂的设置了大量僵尸,而阳光是有限的,🌽加农炮也只能种两棵,请你计算拦截所有僵尸最小需要的阳光量。

输入格式

第一行包含 44 个整数x1x_1y1y_1x2x_2y2y_2,每两个整数之间用一个空格隔开,表示这两棵玉米加农炮的坐标分别为(x1,y1)(x_1, y_1)(x2,y2)(x_2, y_2)。 第二行包含1 1 个整数N N,表示有 NN个僵尸。接下来N N行,每行两个整数 x,yx,y,中间用 一个空格隔开,表示一只僵尸的坐标(x,y)(x, y)。不同僵尸的坐标可能相同。

输出格式

一个整数,即击杀所有僵尸的最少阳光量。

样例 #1

样例输入 #1

0 0 10 0
2
-3 3
10 0

样例输出 #1

18

样例 #2

样例输入 #2

0 0 6 0
5
-4 -2
-2 3
4 0
6 -2
9 1

样例输出 #2

30

提示

两个点(x1,y1)(x_1, y_1)(x2,y2)(x_2, y_2)之间距离的平方是(x1x2)2+(y1y2)2(x_1-x_2)^2+(y_1-y_2)^2

两棵加农炮的工作半径r1,r2 r_1,r_2的平方和,是指 r1,r2r_1,r_2 分别取平方后再求和,即 r12+r22r_1^2+r_2^2

【样例 11 说明】

样例11 中要击杀所有僵尸,在满足最小使用阳光的前提下,工作半径的平方分别为1818 00

【样例22 说明】

样例22中的加农炮与玉米所在的位置如下图所示。要击杀所有僵尸,在满足最小使用阳光的前提下,两个加农炮工作半径的平方分别为20201010

image.png

【数据范围】

对于10%10\%的数据,N=1N = 1

对于20%20\%的数据,1N21 ≤ N ≤ 2

对于40%40\%的数据,1N1001 ≤ N ≤ 100

对于70%70\%的数据,1N10001 ≤ N ≤ 1000

对于100%100\%的数据,1N1000001 ≤ N ≤ 100000,且所有坐标分量的绝对值都不超过10001000