估分:(40 + 30 + 0 + 30 = 100)
考场:(80 + 43.3 + 0 + 30 = 153.3)
((10))
(T1)
考场打的是(O(n^3))暴力(DP),结果。。。
其实可以优化到(O(n^2*logn))的,用多项式优化即可。
但是正解其实离暴力(DP)很近了。
只要像上述技巧一样,在(dfs)下去之前下传,走完子树以后再传回当前节点,如此即可。
(T2)
考场没有什么想法,大概推了一下:
设输入的为(a),求得的为(b)。(sort)以后,
发现:(b[1]+b[2]=a[1]),(b[1]+b[3]=a[2]),(b[n-1]+b[n]=a[n*(n-1)/2]),剩下的不清楚怎么处理,于是打了个暴力+上述的优化。
正解其实是根据上述的规律来操作的。正解是枚举(b[2]+b[3]=a[k]),于是可以得到(b[1],b[2],b[3]),下一个最小的就是(b[1]+b[4]),然后再把(b[1]+b[4],b[2]+b[4],b[3]+b[4])去掉,下一个最小的就是(b[1]+b[5]),以此类推,最后可以(O(n^2))求出一种可能的解(也可能不是)。而(b[2]+b[3])的值最多只有(n)个,于是乎,(O(n^3))算法。
结果改题的时候我打了一个二分的删除删除操作,这样似乎显然会(TLE),结果跑了个最快。。。
其实可以使用(hash)来进行插入删除操作。
(T3)
考场看完题面,感觉不可做,弃疗也。
(T4)
一开始想到主席树,但是发现修改似乎不可行,于是换了个思考点。
考虑欧拉序,但是推了半天发现没有什么结果,于是上了一个暴力。
正解转(dfs)序的二维平面,而后三维偏序问题?差分+(cdq)分治?懵逼o((⊙﹏⊙))o
我的题解
总结
发现自己对于一些技巧性的知识掌握不佳。
有些规律没有继续往下推,需要思考得更深一点才行,不要动不动就否定自己的想法。
有些知识似乎掌握的不到位,例如(FFT),(NTT),树上(DP)。