网站制作软件下载安装,深圳宝安区电子厂,如何设置网站布局,wordpress支持什么格式视频正题
https://www.luogu.com.cn/problem/P4158 题目大意 nnn个墙长度为mmm#xff0c;每次可以粉刷一堵墙的连续一段区间#xff0c;粉刷过的不能再粉刷。给出每个位置应该粉刷的颜色#xff0c;然后求TTT次可以粉刷正确多少个位置。 解题思路
首先我们对于第iii堵墙处理出…正题
https://www.luogu.com.cn/problem/P4158 题目大意
nnn个墙长度为mmm每次可以粉刷一堵墙的连续一段区间粉刷过的不能再粉刷。给出每个位置应该粉刷的颜色然后求TTT次可以粉刷正确多少个位置。 解题思路
首先我们对于第iii堵墙处理出一个gi,jg_{i,j}gi,j表示粉刷jjj次可以正确多少个区间显然jjj只需要到mmm。然后进行分组背包即可。
时间复杂度O(nmT)O(nmT)O(nmT) codecodecode
#includecstdio
#includecstring
#includealgorithm
using namespace std;
const int N51;
int n,m,T,f[N][2510][2],g[N][2510],h[N][2510];
char s[N];
int main()
{scanf(%d%d%d,n,m,T); f[0][0][0]f[0][0][1]-2147483647;for(int p1;pn;p){scanf(%s,s1);for(int i1;im;i)for(int j1;jm;j){f[i][j][0]max(f[i-1][j-1][1],f[i-1][j][0])(s[i]0);f[i][j][1]max(f[i-1][j-1][0],f[i-1][j][1])(s[i]1);}for(int i1;im;i)g[p][i]max(f[m][i][0],f[m][i][1]);}for(int i1;in;i)for(int j0;jm;j)for(int kj;kT;k)h[i][k]max(h[i][k],h[i-1][k-j]g[i][j]);printf(%d,h[n][T]);
}