2020-2021:teams:farmer_john:jjleo:codeforces_round_642_div._3
ABCD
E
题解:设$f[i]$为第$i$位为$1$的最少操作数,dp即可,状态转移看代码。
ans = n;
for(int i = 1;i <= n;i++) sum[i] = sum[i - 1] + (s[i] == '1');
if(!sum[n]) ans = 0;
for(int i = 1;i <= n;i++){
f[i] = n;
if(i - k >= 1) f[i] = min(f[i], f[i - k] + sum[i - 1] - sum[i - k]);
f[i] = min(f[i], sum[i - 1]);
f[i] += s[i] == '0';
ans = min(ans, f[i] + sum[n] - sum[i]);
}
F
题意:给定一个$n \times m$的方格,每个格子有一个高度$a_{i,j}$,每次操作可以使得某个格子的高度减少$1$,高度可以减少到$0$或负数,要求存在一条路径从左上角到右下角,每次只能往下走或往右走,且只能往当前格子高度大$1$的格子移动,求最少操作次数。$(1 \le n, m \le 100, 1 \le a_{i, j} \le 10^{15})$
2020-2021/teams/farmer_john/jjleo/codeforces_round_642_div._3.txt · 最后更改: 2020/05/15 22:36 由 jjleo