跳到主要内容

P5616. 旧街爆破预算

场次:2026年10月10日-非AI方向 · 来源:CodeFun2000 P5616

题目描述​

云小核领下一份清拆委托,要做的事是把这条老街重新修起来,所以沿街还留着的旧房得一间不剩地清完。他手上有一张坐标图,每间旧房落在哪个刻度,图上都标了出来。爆破弹也备了很多,不过落点只能挑在某一间旧房里面,而且每一枚都带着自己的覆盖半径;弹种不一样,覆盖半径也不一样,点响其中一枚所付出的资源数目,正好等于这一枚自己的覆盖半径。只要某间旧房到落点的间距没有超过该覆盖半径,这间旧房就会跟着被清掉。经费并不宽裕,请算出把全部旧房清完,最少要付出多少资源数目。

拿下面这份数据来看,最少付出的资源数目是 2020。

输入格式​

第 11 行给出两个整数 PP 和 QQ。其中 1≤P≤1001 \le P \le 100,写的是旧房一共有多少间;1≤Q≤101 \le Q \le 10,写的是爆破弹一共有多少种规格。

第 22 行给出 PP 个两两不同的整数 x1,x2,…,xPx_1,x_2,\ldots,x_P。其中 0≤xi≤10000000000 \le x_i \le 1000000000,写的是各间旧房所在的坐标。

第 33 行给出 QQ 个两两不同的整数 r1,r2,…,rQr_1,r_2,\ldots,r_Q。其中 1≤ri≤10000000001 \le r_i \le 1000000000,写的是每一种规格对应的覆盖半径。

输出格式​

输出一行,里面只有一个整数,也就是把全部旧房清完时最少要付出的资源数目。

示例​

示例 1​

输入:

3 3
0 12 40
8 12 30

输出:

20

说明:

在坐标 00 投放覆盖半径为 1212 的爆破弹,坐标 00 与 1212 这两间旧房都会被清掉;再在坐标 4040 投放覆盖半径为 88 的爆破弹。两边相加是 12+8=2012 + 8 = 20。若改在坐标 1212 投放半径 3030 的弹,三间可以一次清完,但要付出 3030。每间单独用半径 88,则要付出 2424。

示例 2​

输入:

8 3
0 3 6 50 54 58 100 130
3 4 10

输出:

13

说明:

在坐标 33 投放半径 33 的爆破弹,坐标 00、33、66 三间都会被清掉。在坐标 5454 投放半径 44 的爆破弹,坐标 5050、5454、5858 三间都会被清掉。坐标 100100 与 130130 相距 3030,现有规格里没有哪一种能同时罩住这两间,于是各投放一枚半径 33 的爆破弹。四枚加在一起是 3+4+3+3=133 + 4 + 3 + 3 = 13。

加载评论中...