各种状态转移

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\n",min(dp[n][0], dp[n][1]));

 

posted @ 2020-10-16 10:40  LegendN  阅读(88)  评论(0编辑  收藏  举报