ARC177 记录
__vector__ · · 个人记录
废话区
赛时 40min 切了 ABC,赛时切了 AB 后以为稳上分,就摆了一会再去看 C,最后掉分了,搞得猝不及防。
翻榜发现就比 Register_int 多 2min 罚时,重温了去年省选以 0.01 分差败于 zd 大佬的感觉。
A
设第
注意到对于
一个比较显然的贪心,即每次尽可能选价值大的硬币。
因为,越小的硬币适用的价格范围越广。
B
现在,给定一个全 0 的数组,给定了一些
正着操作似乎不太好操作。
考虑倒着来,依次处理倒数第
假设从前到后第
考虑现在要处理第
显然,可以先使用
以上反复操作,可以得到一组正确答案。
C
两个人,第一个要从
现在要求最多把多少个格子变成紫色,使得两个人都能走到目标点。
事实上,有效的操作一个格子,只能使其中一个人的可使用格子增加。
也就是说,两个人的操作是独立的,分别建图跑最短路求答案,然后加起来就可以了。
我赛时的丑陋代码
D
本题 @Iceturky 教会了我做法,@cxm1024 的代码给了我一个较为简洁易懂的参考,使得我的代码长度压缩了 3 倍,学会了一个较为简洁的 mint 实现。在此拜谢。
注意,如果一些横坐标升序排序后编号连续的点,满足相邻点距离小于等于
现在,依次枚举
现在,考虑什么情况下,刚好第
- 答案不为
0 前提 - 若第
i 个电线杆向左倒塌
第i 个电线杆所在连通块中,横坐标比i 电线杆小的电线杆直接全部清除。
那么要么第i 个电线杆处于所在连通块的最右端,要么第i 个电线杆按横坐标排序的下一个电线杆的编号小于i ,才能保证右边的全部清除。 - 若第
i 个电线杆向右倒塌
和上一种情况同理。
我自认为 cxm 大佬的代码是比大多数题解清楚的,所以超级巨佬 cxm1024 的赛时提交
E
官方题解说只有一百多种有效的题目分数分布,暂时没理解。