A.老洪的遍历
这个能重复经过是我没想到的,所以考试的时候思路直接就乱了
那么直接连着跑最长路就能得若干分
(Johnson) 全源最短路:先找一个虚拟源点,向所有点连上 (0) 权边
然后跑 (spfa),此时把每个边的加入 res[fr]-res[t]
的势能,然后跑 (n) 次 (dij) ,最后减掉这些势能
观察原来题目里面给的式子,(frac1{2}(B_ifrac{B_j}{A_j}-B_{i}frac{B_j}{A_i}))
这显然是个叉积,所以把每个点视作 ((B_i,frac{B_i}{A_i})),然后把凸包建出来求面积就好了
正确性是显然的,关于计算几何的部分:
求凸包先按照 (x_i) 排序,开栈先不断找斜率最小的部分,这个维护单调栈然后写 (isright) 就行了(叉积小于 (0))
然后从后往前扫来求上半部分
B.老洪的神秘操作
先差分,把区间操作变成单点修改
对于两个和为 (7) 的数是可以直接一次操作解决
对于剩下的数,考虑 (dp) 出来最多能节省几个,也就是能分成几个和为 (7) 的倍数的组
直接 (dp_{i,j,k,l}),枚举添加哪个进行转移即可
C.老洪的数组
其实很厉害,结果让根号分治给干过去了就没意思了
根号分治的做法就是先攒询问,够 (S) 个直接重构数组,反之每次暴力找剩余的数对答案的影响,是一个组合数的形式
注意实现的时候 (xle 20,yle 10^5),别弄反了
还不懂为啥这个 (C_j) 对 (F(x,y)) 的贡献是 ((y-j)) 的最高 (x) 次多项式,所以咕掉了正解