CF1353E
1 for(int i = 1 ; i <= n ; i++){
2 dp[i][0] = min(dp[i - 1][1], dp[i - 1][0]) + (s[i] == '1');
3 if(i >= k) dp[i][1] = dp[i - k][1] + sum[i - 1] - sum[i - k] + (s[i] == '0');
4 //只能由前k-1盏灯均不亮,i-k号灯亮转移过来
5 dp[i][1] = min(dp[i][1], sum[i - 1] + (s[i] == '0'));
6 //前面的灯都不亮,从当前开始的情况
7 }
8 printf("%d
",min(dp[n][0], dp[n][1]));