补CSP2019
Day1 T1 格雷码
按题意模拟即可,把远古时期的代码调过了
Day1 T2 括号树
很简单嘛,就是模拟个栈。因为括号序列中好多都是用栈维护的。
栈需要进行版本回退所以每步对栈进行什么修改要记一下。
Day1 T3 树上的数
所以说当时 Day 1 是不是大众分210 啊(((
我不会,跳了。
Day2 T1 Emiya家今天的饭
84 分 DP还挺好想的,额就是先算出所有的方案,然后减掉某个主食出现超过一半的。
然后设 \(f_{i,j,k}\) 表示到第 \(i\) 行,总共选了 \(j\) 个数,当前菜品选了 \(k\) 个。
然后嗯转移就行。
\(f_{i,j,k}=f_{i-1,j,k}+f_{i-1,j-1,k}\times (s_i-a_{i,col})+f_{i,j-1,k-1}\times a_{i,col}\)
然后就是我们发现我们只关心 \(j\) 和 \(k\) 之间的大小关系。
所以我们改变状态,设 \(f_{i,x}\) 表示到第 \(i\) 行,\(k-(j-k)=x\) 的方案数,转移和上面一样。
Day2 T2 划分
我之前写单调队列的时候写完了,就是类似决策单调性的东西。
Day2 T3 树的重心
首先需要有几个我能记住的性质。
一棵树以 \(p\) 为根,如果 \(p\) 不是重心,那么重心一定在 \(p\) 的重儿子那棵子树里,所以我们可以用倍增的方式找到某棵子树的重心。这样我们可以通过换根的方式枚举所有边, \(O(\log)\) 的时间对每条边左右两棵子树找到重心。

浙公网安备 33010602011771号