标签:inpu return 数值 ++ 表示 else using 贪心 正整数
John和朋友们在玩纸牌游戏,他们一共有m个人(包括John)。他们的纸牌比较特殊,一共有n*m张牌,牌号分别为1,2,…,n*m,没有牌号相同的牌。每个人先拿到n张牌,然后,每一轮,每个人出一张牌,谁最大则谁赢得这一轮。现在已知John手中的n张牌,计算他最少能赢得多少轮。
第一行为两个整数m和n,2≤m≤20,1≤n≤50;第二行有n个正整数,表示John手中的n张牌的数值。
仅一个整数,表示John最少能赢的次数。
2 5 1 7 2 10 9
2
6 11 62 63 54 66 65 61 57 56 50 53 48
4
贪心加桶排
#include<cstdio> using namespace std; int n,i,j,m,a[5005],b[5005],ans,cnt; inline int read(){ int s=0,w=1; char ch=getchar(); while(ch<‘0‘||ch>‘9‘){ if(ch==‘-‘){ w=-1; } ch=getchar(); } while(ch>=‘0‘&&ch<=‘9‘){ s=s*10+ch-‘0‘; ch=getchar(); } return s*w; } int main(){ m=read(); n=read(); for(i=1;i<=n;i++){ a[i]=read(); b[a[i]]=1; } n*=m; for(i=n;i>=1;i--){ if(!b[i]){ ++cnt; } else if(cnt>0){ --cnt; } else{ ++ans; } } printf("%d ",ans); return 0; }
标签:inpu return 数值 ++ 表示 else using 贪心 正整数
原文地址:https://www.cnblogs.com/hrj1/p/11669073.html