Rabbit的工作(1) 题解

Rabbit的工作(1)

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

用一个二维数组dp[i][j]来表示工作i天,连续工作j天
那么得到状态转移方程dp[i][j]=(dp[i-1][j-1])+j (如果当前字符为'1')
最终只要遍历dp数组,找到最长天数ans(并且它满足dp[i][j]<=K,即题目中说的总体力消耗不超过K)

#include <bits/stdc++.h>
using namespace std;
int dp[410][410];
const int INF=0x3f3f3f3f;
char s[410];
int main()
{
    int n,m;
    scanf("%d%d",&n,&m);
    cin>>s+1;
    memset(dp,INF,sizeof(dp));
    dp[0][0]=0;
    for(int i=1;i<=n;i++)
    {
        for(int j=i;j;j--)
        {
            for(int k=j;k;k--)
            {
                dp[j][0]=min(dp[j][k],dp[j][0]);
                if(s[i]=='1') dp[j][k]=min(dp[j][k],dp[j-1][k-1]+k);
            }
        }
    }
    int ans=0;
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        {
            if(dp[i][j]<=m) ans=i;
        }
    }
    printf("%d\n",ans);
}
全部评论

相关推荐

运营你豪哥:简历改改吧-非本、求职意向技术岗、无实习经历、内容空洞 如果简历不爆改的话,应该是会持续崩溃了 1.把你教育经历放最下面去 2.蓝底照片很奇怪哈,感觉还在高中时代,建议白底重新拍一下 3.校园经历没啥必要,收集和反馈同学们对产品的意见,解决学生和老师之间的沟通,企业招聘不看这些哈 好好思考一下简历的设计和你要表达的重点,再去投简历
点赞 评论 收藏
分享
今天 19:58
门头沟学院 C++
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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