Codeforces Round 912 (Div. 2)
1|0Codeforces Round 912 (Div. 2)
1|1基本概述
最难受的一集。
A 题秒了。
B 题幸苦推了两个小时,最后也通过了pretest
了,结果赛后被 HACK
。
C 题知道是DP
,但觉得不好推状态转移方程,所以全心全意去做 B 题了。
1|2B. StORage room
我的思路
其实就几乎是答案。
之前几乎没怎么碰过位运算的题目,一开始先搞清楚按位或运算,然后我把样例输入和输出都用二进制搞出来。
对于样例一:
1 | 2 | 3 | 4 | |
---|---|---|---|---|
1 | 000 | 011 | 011 | 101 |
2 | 011 | 000 | 011 | 111 |
3 | 011 | 011 | 000 | 111 |
4 | 101 | 111 | 111 | 000 |
1 | 2 | 3 | 4 |
---|---|---|---|
001 | 011 | 010 | 101 |
经过一大堆推导,我得出几个结论:
- 因按位或只能增加
的个数,不能增加 的个数,所以 比 重要,所以要尽可能地保留 。 - 与第
个答案相关的所有格子刚好是样例的第 行或者第 列。
至少对于样例来说,这个想法没问题,但我一开始没看到解不唯一,还卡了好一会。
然后得出做法:
- 对于第
个答案,将第 行所有数按位与,结果就是答案。 - 卡了一会,也想出了怎么验证解正确性,因为数据不大,直接带入验证就可以。
然而被赛后的数据点干碎了。靠
这玩意,我的程序输出的是
NO
然后产生的答案是
1 1 1
然而按照我的思路来说,应该要得出正确答案才对。
毕竟
而正确答案也确实是这个。
然后我检查了一下代码,真是靠了。
这个 if
我的本意是用来判断除了
但是对于这个数据,根本不能用这样一个 if
判断!
因为当出现连续的两个 if
执行了!!!导致第三个
修改就很简单了,把
真的是,魔鬼就在细节中啊。
标答思路
Solution:
Initially, we set all
You can through every
Then we check if
Proof:
Initially, all elements have all their bits set on and we remove only the bits that affect our answer. If
1|3C. Theofanis' Nightmare
还没理解答案
Let
Definitely,
We can easily see that this greedy works.
__EOF__

本文链接:https://www.cnblogs.com/kdlyh/p/17869486.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下