摘要:
裸的tarjan 依题意有向图上i和j之间能互相到达,i和j肯定在同一个scc内 最小的代价就是Σ每个scc内最小的cost 方案就是每个scc内最小值的数的乘积 #include<bits/stdc++.h> using namespace std; const long long mod=100 阅读全文
摘要:
一眼并查集 但是怎么维护,借鉴了别人的思路 如果有重叠的话端点一定要重叠,所以用端点来代表线段就可以了 但是暴力连边复杂度受不了 考虑把线段拆成两点,同色的放入一个集合,更新的时候不断合并直至size()==1(==1不erase是因为要留下r最大的,显然只有r最大的有用) #include<bit 阅读全文
摘要:
很好的题 [ 观察样例发现只有0,1,2 大胆猜测是不是也只会有0,1,2 如果不是的话说明某条路径上出现过0,1,2,且是以2,1,0的情况出现的 但是2的末尾是0,和1&不可能得到1,所以假设不成立 ] 然后考虑什么时候有0 有0的充分必要条件是对于二进制的每一位,都有一个地方出现一个0 相反的 阅读全文