摘要:
原题链接 考察:博弈论 思路: 每次可以选择两个方向,往正方向走,如果0在偶数个位置必胜.往反方向走,如果0在离n+1的距离有偶数个距离也必胜. ##Code #include <iostream> #include <algorithm> using namespace std; const in 阅读全文
摘要:
原题链接 考察:构造 思路: 异或和为u,数值和为v.如何判断不可能成立? u>v 即不成立.很明显因为u是v的不进位加法. u&1 != v&1 .正如上面说u是v的不进位加法.进位是不会改变奇偶性的.理性证明就是 v = u + 2*(u&v) u&v得到u哪些位置该进位,把它们左移一位即可. 阅读全文
摘要:
原题链接 考察:构造 思路: 求所有构造图内任意两点Mex(u,v)最大值最小的构造图. 考虑如何求Mex(u,v)的最大值.在同张图上,路径更长的边比路径更短的边Mex值要大.所以我们考虑树上的"链". 如果只有一条链,任意构造即可. 如果有>1条链子,由贪心思想,我们不要让0,1,2..在一条边 阅读全文
摘要:
原题链接 考察:思维 思路: 我是菜狗,连A题都不会.这道题实际就是1和n-1. ##Code #include <iostream> using namespace std; int n; int main() { int T; scanf("%d",&T); while(T--) { scanf 阅读全文
摘要:
原题链接 考察:线段树 思路: 如果做过校门外的树(增强版)那道题,应该可以想到是建立两个线段树.一个维护基友和女神约会时间tr[0],一个维护女神时间tr[1]. 对于基友相约t,我们求出tr[0]的t个空白时间的最左端点,然后更新tr[0];对于女神相约t,先求出tr[0]的左端点,没有就求tr 阅读全文