01背包的变形/拓展(这道题其实是二维背包)

Rabbit的工作(1)

https://ac.nowcoder.com/acm/problem/21675

//头文件
int n,k;
string str;
//f[i][j] //在前i天已经工作了j天
//f[i][j][p] //多了一维p(现在已经连续工作了多少天)
//f[j][p] //采用就地滚动去掉第一维
int f[405][405];
int main(){
read(n);read(k);
cin >> str;
//int len=str.size();
memset(f,0x3f,sizeof(f));
f[0][0]=0;
for(int i=1;i<=n;++i){
for(int j=i;j>0;--j){
for(int p=1;p<=j;++p){
//f[j][0]表示这一天休息
f[j][0]=min(f[j][0],f[j][p]); //f[i][j][0]=min( f[i][j][0] , min(f[i-1][j][0],f[i-1][j][p]) );
if(str[i-1]=='1')
f[j][p]=min(f[j][p],f[j-1][p-1]+p); //f[i][j][p]=min(f[i-1][j][p],f[i][j-1][p-1]+p);
}
}
}
for(int j=n;j>0;--j){
for(int p=j;p>=0;--p){
if(f[j][p]<=k){
cout << j;
return 0;
}
}
}
cout << 0;
return 0;
}

全部评论

相关推荐

03-01 21:45
中北大学 golang
孤蓝长空:请你说一下为什么你用websocket而不是http,请你说一下什么是rpc,为什么用rpc,你的rpc的传输协议是JSON,xml还是什么 请你描述一下你的鉴权流程(完整的) 我问的是第二个项目,随便问的哈哈哈
开工第一帖
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务