总结
1. 这次实战我个人感觉还是不错的,至少告别了WA和RE。
2. 有的时候一个朴素的算法加上尽可能多的优化便可以多10~20分
3. 被卡常的感觉真的很不爽。T_T
实战
T1
这道题标算是线性筛,然而当时我不会。。。于是就写了一个朴素的(n√n+q)的算法,然后加了个小优化,在判断i是否是小X喜欢的数时,枚举2~√n以内的质数,然后找到第一个因子就break。亲测这样做当l,r<=5000000时是完全没有问题的。
然而数据规模l,r<=10000000,当时我就……
T2
这道题第20个点据说是XYX特意制作的,然后许多人会莫名其妙地WA掉,不过我也不清楚为什么。。。我个人感觉AC这道题是很轻松的,貌似没什么要特别注意的地方。
这道题就是一个简单的BFS,然后hash判重时记录到这个点时钥匙是否相同。
至于钥匙的状态需要压位和一些简单的位运算技巧,然后便可轻松水过。
T3
这道题一看就是一道LCA题,当时就开始认真地推公式。。。
经过我不懈地努力,似乎真的发现了点规律。
最后只需输出 (A——B经过的节点数 + B——C经过的节点数 - A——C 经过的节点数 + 1)/2 即可
//不懂的可以自行画个图理解一下...
至于A——B所经过的节点数,即为depth[A] + depth[B] - depth[lca(A,B)]*2 +1。
时间复杂度为(nlogn),当n<=200000时是完全可以过的。
但是我只有80分,估计是常数过大。。。
下午上课时把线性筛素数听懂了,好开心。。。这样T1便可以做了