【河南省多校脸萌第六场 E】2358:LLM找对象

来源:互联网 发布:java socket聊天程序 编辑:程序博客网 时间:2024/06/08 13:23

题目链接 http://acm.nyist.me/JudgeOnline/problem.php?id=2358

题目描述
找对象可不是一件容易的事情,如果你想找个好对象啊,喜欢打游戏的得把游戏戒了,喜欢acm的得把acm戒了,然后“天将降女朋友于斯人也,必先看其有没有穿拖鞋”,现在LLM相中了N个妹子,他通过观星、占卜、杀队友祭天等方法终于发现了自己与这N个妹子分别

相遇的时间,但是LLM还是想穿拖鞋(但是穿了拖鞋就会情商急速下降找无法认识妹子),因此LLM决定忍痛割爱选择K天不穿拖鞋,但是不可以有任意两天连续不穿拖鞋,现在LLM问你他最多可以认识多少妹子

输入
每个测试文件包含不多于10组测试样例

每个测试样例第一行包含两个整数,N,K

接下来一行有N个数字,分别代表和第i个妹子相遇的是哪一天(这一天的编号小于100000000)

1<=N<=500,1<=K<=100000000

输出
输出包含一行,代表可以认识的妹子数量

样例输入
5 2
666 233 10086 233 10086
样例输出
4
提示
来源
河南省多校脸萌第六场

#include<cstdio>#include<iostream>#include<cmath>#include<cstring>#include<cstdlib>#include<algorithm>#define FIIL(a,b) memset(a,b,sizeof(a))using namespace std;int a[1100];int v[2100];int dp[1001][1001][2];int main(){     ios::sync_with_stdio(false);    int n,m;    while(cin>>n>>m)    {        for(int i=0;i<n;i++)         {            cin>>a[i];        }        sort(a,a+n);        int o=0;        FIIL(v,0);        FIIL(dp,-1);        //v[o]++;        for(int i=0;i<n;i++)        {            int j=i;            while(j+1<n&&a[i]==a[j+1]) j++;            if(i>0&&a[i]!=a[i-1]+1)            {                o++;            }            v[++o]=j-i+1;            i=j;        }           dp[0][0][0]=0;        dp[0][0][1]=0;        int ll=min(m,o);        for(int i=1;i<=o;i++)  //第一次         for(int j=1;j<=ll;j++) //共计天         {   //          if(j-1==0)//          {   //                  dp[i][j-1][0]=  dp[i][j-1][1]=0;//          }//          else if(i-1==0)//          dp[i-1][j][0]=  dp[i-1][j][1]=0;//                       if(dp[i-1][j-1][0]>=0)            {                   dp[i][j][1]=max(dp[i-1][j-1][0]+v[i],dp[i][j][1]);                dp[i][j-1][0]=max(dp[i-1][j-1][0],dp[i][j-1][0]);            }            if(dp[i-1][j-1][1]>=0)             {                dp[i][j-1][0]=max(dp[i-1][j-1][1],dp[i][j-1][0]);            }        }        int ans=0;        for(int i=1;i<=ll;i++)        {            ans=max(ans,dp[o][i][0]);            ans=max(ans,dp[o][i][1]);        }        cout<<ans<<endl;    }     return 0; }
阅读全文
0 0