题意简述
给定 n n n个数 a 1 , a 2... a n a1,a2...an a1,a2...an。如果 i < j i<j i<j且 a [ i ] & a [ j ] a[i]\&a[j] a[i]&a[j]( & \& & 是按位与运算)非零,则 i → j i\rightarrow j i→j连一条有向边。 q q q次询问,每次给定 x i xi xi和 y i yi yi,查询 x i xi xi是否能到 y i yi yi。
每个输入的数都<=3e5,并且1<=xi<yi<=n。
思路框架
处理 d p [ i ] [ j ] dp[i][j] dp[i][j]表示 i i i往后第一个能到并且包含二进制第 j j j位的位置。
然后看是否存在 k k k使得 d p [ x ] [ k ] < y dp[x][k]<y dp[x][k]<

博客探讨了Codeforces 1169E题目,涉及图论和位运算的算法。文章首先介绍了题目的背景和要求,即根据按位与运算判断在给定序列中是否存在路径。接着,提出了动态规划的解决方案,详细解释了如何处理dp状态转移和next数组的维护,以判断从xi能否到达yi。最后,提供了实现该思路的代码。
最低0.47元/天 解锁文章
286

被折叠的 条评论
为什么被折叠?



