首页 > 代码库 > HDU 1338 Game Prediction
HDU 1338 Game Prediction
这题我用的是贪心算法,我的理解是这样的:
要求我最少能赢的次数,就是求别人最多能赢的次数。首先把我的牌先升序排序,然后我从小开始出,对于我出的牌,别人应该尽可能的压,而且用他们比我大的最小的那张牌;如果他们不压,那么他们后面这张牌就很有可能用不上,就少赢一次。
#include<cstdio> #include<iostream> #include<cstring> #include<algorithm> #include<stack> #include<queue> using namespace std; int card[52]; bool used[1002]; int n,m,t; int _find(int x) { for(int i=x+1;i<=t;i++) if(!used[i]) return i; return 0; } int main() { int k=1; while(scanf("%d%d",&m,&n)) { if(n==0&&m==0) break; memset(used,false,sizeof(used)); for(int i=1;i<=n;i++) { scanf("%d",&card[i]); used[card[i]]=true; } sort(card+1,card+n+1); t=n*m; int ans=0; for(int i=1;i<=n;i++) { int a=_find(card[i]); //printf("card=%d,a=%d\n",card[i],a); if(a!=0) used[a]=true; else { ans+=n-i+1; break; } } printf("Case %d: %d\n",k++,ans); } return 0; }
HDU 1338 Game Prediction
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。