题目是 AH NOIP D1 模拟的第二题,侵权自删
题目:https://www.luogu.com.cn/problem/U263368
我的做法是,从高位到低位枚举,bfs 检查是否有路径可以满足这一位全部为 1,并且与之前的路径不冲突。
现在遇到的问题是,我无法判断一个数 x 是否与 y 满足以下条件:
- 记最右边为第 0 位,则要求满足 y 第 i−1 位左边的所有位数,如果有 1,则这一位 x 必须也是 1,而 y 的这一位如果是 0,则不用管 x 在这一位的取值。
我的代码:https://www.luogu.com.cn/paste/9zh8wevx
我无法实现的就是代码里面的 check
函数,我使用了 log 的复杂度解决,仍然无法做到 O(1)。
这导致,我即使开了 O2,也无法 AC:https://www.luogu.com.cn/record/94932954
所以我选择开大时限到 1.2s,但是,我仍然 TLE:https://www.luogu.com.cn/record/94933054
我把同一份代码交了一遍,期间没有更换代码,但是 AC 了:https://www.luogu.com.cn/record/94933083
可以注意到,这三份同样的代码,#10 的差距很大,请问是 lg 评测机问题还是代码有 UB 什么的导致效率不稳定。