Warning: session_start(): open(/tmp/sess_6b33b0344ed06c84b24fa5b775338bb3, O_RDWR) failed: No space left on device (28) in /data/wiki/inc/init.php on line 239
Warning: session_start(): Failed to read session data: files (path: ) in /data/wiki/inc/init.php on line 239
Warning: Cannot modify header information - headers already sent by (output started at /data/wiki/inc/init.php:239) in /data/wiki/inc/auth.php on line 430
Warning: Cannot modify header information - headers already sent by (output started at /data/wiki/inc/init.php:239) in /data/wiki/inc/Action/Export.php on line 103
Warning: Cannot modify header information - headers already sent by (output started at /data/wiki/inc/init.php:239) in /data/wiki/inc/Action/Export.php on line 103
Warning: Cannot modify header information - headers already sent by (output started at /data/wiki/inc/init.php:239) in /data/wiki/inc/Action/Export.php on line 103
==== 题面描述 ====
(简化版)在给定点的半径为 $r$ 的圆内选一点,求以该点为圆心半径为 $R$ 的圆覆盖到的点的权值和最大是多少。点数为 $n$ 。
$n \le 1000$
==== 题解 ====
考虑如果不能平移该圆使得某点在其边缘,则其解一定与直接取在给定点处相同。
之后考虑枚举取在某点为圆心的圆上,这里可以有两种放法,如果该点权值是负数,则可以略微向外一点,如果是正数则取上。
然后对于其他的点,我们考虑求出来其与这个圆的交的弧度,然后做扫描线。在实现时,可以将可选点的那个圆也一块放进去,然后权值设为极大即可。