A. Balance
- 相当于x[i]+y[j]>=a[i][j], 最大化(sum x[i]+y[i])
- 以为是bm,其实不是
- 上单纯形
B. Entanglement
C. Gravity
D. Infinite Pattern Matching
- 分类讨论
E. Inheritance
F. Movies
G. Origami
H. Qnp
I. Salaj
upsolved
- 考虑 dp 维护图的形状。NG
- 考虑一个序列是不是合法的,手玩一会儿发现 (f_i=f_{i-1}) 可以获得一枚金币,(f_i<f_{i-1}) 需要支付 (f_{i-1}-f_i) 枚金币。
- (dp[i][j][k]) 前 (i) 个位置,剩下 (j) 枚金币的方案数,花掉了 (k) 个的方案数,空间就 (O(n^5)) 了,糟糕!
- 发现第二维不用开这么大,因为最多用 (n-1) 枚金币,所以 (dp[i][n][k]) 可以表示 (sum_{j=n}^{+} dp[i][j][k])
- 有些状态是不合法的,如果加入 (i) 条边后,SCC 至多为 lim,那么 (f[i][][<(m-lim)]) 的状态是不合法的。
- 仔细思考一下 dp 优化,类似于多重背包的转移,可以 (O(n^4)) 解决问题。
- 卡常,不要用 LL,用 int。
J. Taxi
- 先考虑放好了 2m 个点后怎么求。
- 两条路径不交一定不是最优。
- 一条边左边有 (x) 个人,(y) 辆车,右边有 (x') 个人,(y') 辆车,那么这条边的贡献为 (min(x,y')+min(x',y))
- 考虑每条边的贡献,先求一求子树内放 (?) 只卜,子树外放 (m-?) 只卜的方案数,讨论一下 (x,y') 谁更小,前缀和优化。
K. Tris
L. Xormites
- xorsum = 0,谁也 win 不了,因为得分肯定一样,判掉。
- 观察到 (n) 为偶数,先手一定 win,因为先手可以拿走所有奇数位置的元素,也可以拿走所有偶数位置的元素,判掉。【排骨龙】
- 盯着 xorsum 看,我们发现影响胜负的是最高位的 1!
- nice!变成 01 序列了
- 先手第一步必须拿 1,不然就【排骨龙】了
- 先手操作完第一步后,后手拿什么,先手就得跟什么,不然就【排骨龙】了
- 如果 1 的个数模 4 等于 3,先手就完蛋了,因为能跟上到最后也会完蛋。
- 问题转化成给一个长度为偶数的 01 序列,两人轮流操作,问后手能不能每轮都拿和先手一样的数字。
- 打表找规律?不会证明啊!
- 若
a[l]!=a[r]
,当且仅当每段都是偶数。 - 否则
solve(l,r) = solve(l+1,r-1)
- 若