CF div2 996(A~D)

立山  金牌会员 | 2025-1-13 09:47:32 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 904|帖子 904|积分 2712

手速场,前三题偏简单,后三题偏难。赛时三题,C题做法麻烦了些导致过得不是很快,但末了打得也不是很差。
A

两只田鸡相邻时,可移动的田鸡一定输:直接把该田鸡挤到边沿即可。
而是否相邻可以直接用二者初始间距的奇偶性来判断,由于显然先后手和间距奇偶性的关系是保持不变的,所以间距为\(0\)时的先后手可以直接根据初始的先后手和间距来判断。
code
B

将所有\(a - b\)预处理出来,问题等价于:可给某个数加\(1\),其他数减1,最终是否可以让所有数都\(>=0\)。
显然最多只能有一个负数,否则其中的某两个负数永久无法和谐。
而恰有一个负数时,只有当其他正数中的最小者\(>=\)该负数的绝对值时,才气确保二者最终都\(>=0\)。
按上述方法判断即可。
code
C

构造题硬被我做成了解方程题。。。
我的方法是设出发点\(g[1][1]=x\),在代码中设方程利用了\(pair\)键值对\((a,b)\)来维护\(ax+b\)的两个系数,比如对于出发点\(g[1][1]=x\),即为\(a=1,b=0\)。而且可以发现,沿着给定路径走到第\(i\)个点时,在前\(i-1\)个点上的数均已用\(ax+b\)表示的环境下,第\(i\)个点上的数也是可以直接用\(ax+b\)确定的。因此层层递推,最终路径上的所有点均可以用\(ax+b\)的形式唯一表示。
末了看每一行,每一列用\(ax+b\)形式表示出的总和,当有恣意两个总和对应\(x\)的系数不相等时,\(x\)便可直接解出。若所有总和对应的\(x\)系数均相同,则\(x\)可取恣意值(证明略)。
但这个做法实在太麻烦了,导致coding耗费了不少时间qwq...
code
D

一道不太好想的模拟题。
最开始时,第一只稻草人肯定要尽快移动到位置0,让乌鸦开始向右移动。
之后的环境仅需要考虑当前乌鸦的左右两侧最近的两个稻草人即可。
剩下的思绪就是尽可能贪婪地让乌鸦尽快移动,可以根据乌鸦当前的位置提前调整后面稻草人的位置,具体细节见代码解释(实在是懒得写详细思绪了qwq...)
同时有个处理细节:由于可能出现移动\(0.5\)秒的环境,而末了让输出时间的\(2\)倍。为了便于模拟,直接将所有间隔相关的量扩大\(2\)倍即可,这样模拟出的时间恰对应原时间的\(2\)倍,且模拟过程中不会出现小数。
code

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

立山

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表