AT_ahc039_a.[AHC039A] Purse Seine Fishing
NOI/NOI+/CTSC
通过率:0%
AC君温馨提醒
该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
在一个二维平面上,给定 N 条鲭鱼和 N 条鯵鱼。你的任务是设计一个多边形,使得其内部包含的鲭鱼数量减去鯵鱼数量的差值最大。此外,位于多边形边界上的点也被视为在多边形内部。
输入格式
输入通过标准输入提供,格式如下:
$ N $ $ x_0 $ $ y_0 $ $ \cdots $ $ x_{2N-1} $ $ y_{2N-1} $
- 所有测试用例均固定鲭鱼和鯵鱼的数量 N 为 5000。
- 对于每个 i=0,1,⋯,N−1,(xi,yi) 为第 i 条鲭鱼的坐标。
- 对于每个 i=0,1,⋯,N−1,(xN+i,yN+i) 为第 i 条鯵鱼的坐标。
- 每个坐标 (xi,yi) 满足 0≤xi,yi≤105,且所有坐标互不相同。
输出格式
输出一个多边形,它的顶点数为 m(4≤m≤1000)。设第 i 个顶点的坐标为 (ai,bi),请按以下格式打印到标准输出:
$ m $ $ a_0 $ $ b_0 $ $ \cdots $ $ a_{m-1} $ $ b_{m-1} $
输出的顶点不必严格组成多边形的角度,即允许连续的三个顶点共线。但所有顶点坐标必须互不相同,顺序可以是顺时针或逆时针。
可以多次输出解决方案,只有最后一次输出会被用于评分。利用 Web 版可视化工具可以对多个解进行比较。
说明/提示
条件
- 多边形的顶点数不超过 1000,且边长的总和不超过 4×105。
- 每个顶点的坐标为整数并满足 0≤x,y≤105。
- 每条边必须平行于 x 轴或 y 轴。
- 多边形不能自交:非相邻边之间没有交点,相邻边之间只有一个公共顶点。
得分计算
假设输出的多边形内部包含的鲭鱼总数为 a,鯵鱼总数为 b,得分为 max(0,a−b+1)。
输入数据生成方法
- rand(L,U):在 L 到 U 范围内生成一个整数。
- rand_double(L,U):在 L 到 U 范围内生成一个实数。
- normal(μ,σ):根据平均值 μ 和标准差 σ 的正态分布生成一个随机实数。
首先生成鲭鱼的坐标。随机选择一个集群数量 n=rand(10,25)。对于每个集群 i,随机生成权重 wi=rand_double(0,1),中心点 (cxi,cyi)=(rand(20000,80000),rand(20000,80000)) 和标准差 σi=rand(1000,5000)。重复生成 N 条鲭鱼,每次根据权重随机选择一个集群,然后生成 x=round(normal(cxi,σi)) 和 y=round(normal(cyi,σi))。如果生成坐标满足条件且互不相同,则接��该坐标;否则重试。
鲭鱼生成完毕后,以同样的方法生成鯵鱼的坐标。
工具(输入生成器和可视化工具)
- Web 版: 更高性能并支持动画显示。
- 本地版: 需要 Rust 语言编译环境。
- Windows 版编译好的程序: 如果不想设置 Rust 环境,可以使用此版本。
比赛期间请勿分享可视化结果或讨论解法。
本翻译由 AI 自动生成
输入解题思路,AI测评打分。不知道怎么写?