AtCoder 板刷记录
话说为啥这些场都没有 G 题的说
[ABC200F] Minflip Summation
显然的策略是把全部都是一个数的段变成全不都是另一个数,然后考虑进行 dp
设一个 dp[i][0/1][0/1] 表示一下前 i 个字符中奇偶性为 j 填的数是 k 时 j 的总和
然后直接做就行了,需要矩阵快速幂加速一下
[ABC201F] Insertion Sort
考虑进行 dp 维护,很显然一个人只会有移动一次,因为反复横跳是没有意义的,而且并不优
那么我们就可以设出一个 f_i 表示对于对于不超过 i 的人(i \belong S)的代价最小值
我们如果确定了一个顺序 {S_i} 我们就可以知道,我们只需要进行分类讨论,如果 A_i < S_i 就直接取一个 min(a_i,b_i)
如果 A_i > S_i 我们就取一个 min(a_i,c_i) 就行
我们需要最小化代价和,可以发现没有后效性,考虑 dp 即可
转移方程是 dp[i] = min ( \sum_{j=1}^{i-1} min(A_j,B_j), min_{j<i}(dp[j] + \sum _{k=j+1}^{i-1} A_k))
最后的答案是 min(dp[j] + \sum_{j=i+1}^n (A_i+C_i))
复杂度 O(n^2),发现似乎不是很优秀,那么考虑用线段树优化到 O(n log n)
[ABC203F] Weed
容易发现这道题是一个 dp,用 dp[i][j] 表示进行 j 次操作拔掉前 i 棵的草
转移方程是 dp[i][j]=min{dp[i−1][j]+1,dp[i′][j]}
预处理出 i' 然后暴力转移即可,这样就解决了
[ABC204F] Hanjo 2
发现宽很小,但是长度很长,没救了,因此拆成一行一行来做
设一个 f_{i,S} 表示前 i-1 行全部都已经填满,而第 i 行的状态是 S 的情况的方案数,那么这是一个状压 dp
可以发现转移肯定是从 f_{i-1,T} 转移到 f_{i,S} 的,我们再滚掉 i 这一维追加矩阵快速幂即可
[ABC205F] Grid and Tokens
没啥好说的,容易发现是一道网络流题目,建模
对于每个棋子都开两个点,一个对应 \(x\) 一个对应 \(y\) 即可,复杂度 O(能过)
[ABC206F] Interval Game 2
SG 函数板子题,结束
[ABC207F] Tree Patrolling
是树上背包,好耶,我们没救了喵
定义 f_{i,j,0/1} 表示在以 i 为底的子树内,被控制的节点有 j 个,当前节点有没有被控制
那么就可以直接转移了,进行一个超大的分讨即可
[ABC208F] Cumulative Sum
太好了,是拉格朗日插值板子题,我们没救了