【CPS-S2019模拟】10.23比赛总结

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_43649416/article/details/102743696

我太难了

比赛思路

传送门

  • T1:因为n显然是给你n方的,所以n2枚举一波,然后发现对答案的贡献是一个段连续的区间和,差分两次就好了。
  • T2:随机游走???猛推一波随机游走的式子,完全靠yy,正确性显然没有,所以就没有打。然后发现直接高斯消元有60分。
  • T3:题意都没懂。。。

赛后消化

  • T1数组开小gg。
  • T2优化一下常数就n3水过去了(没有梦想的我不配拿多40分)。从叶子往上倒着高斯消元就好了,因为用i消j,i儿子已经没有了,剩下与i有关的只有i的父亲和爷爷的位置上有值,而j的这两个位置上也一定有值,所以消父亲的时候不会多出一些位置从0变成了别的。时间复杂度和正确性就能够保证了。
  • 实际上T2还有nlogn 的做法。
  • T3,实际上求的是一个最大的d,使得
    i d w i S = d , S = w i \sum \frac {|i-d|*w_i} {S} =d,S=\sum w_i
    然后假设 f ( d ) = i d w i d S f(d)=\sum {|i-d|*w_i}-d*S ,要使得 f ( d ) = 0 f(d)=0
    发现这是一个单调递减的函数,因为如果d变大,前面的增量比后面的小。
    二分找零点前的整数,用树状数组维护和就可以找到。
    再解个方程就好了。

总结

  • 数组一定要检查大小。
  • 注意观察题目性质,期望题高斯消元真的是最常规的套路呀。
  • T3除了题意就是一道水题。。。但是我因为打错了一个字符调了两天。。。心态崩了。

猜你喜欢

转载自blog.csdn.net/qq_43649416/article/details/102743696