poj 1323

来源:互联网 发布:手机连不上4g网络数据 编辑:程序博客网 时间:2024/06/05 17:56

贪心基础题。至少能赢多少次。换句话说,就是自己每次出一张牌,其他人尽量让你输,其他人足够聪明,当你出一张牌时,为了让你输,会出一张比你大的,除非其他人没有,那么这轮你就赢啦,为了不造成浪费,最优的方法肯定是出一张比你出的牌大的牌中最小的牌(贪心的思想),可以证明这样的贪心结构是正确的

#include <iostream>#include <cstdio>#include <algorithm>using namespace std;const int maxn=1001;int vis[maxn],a[maxn];int n,m;int main(){int t=0;while(cin>>n>>m){if(m==0&&n==0) break;t++;memset(vis,0,sizeof(vis));for(int i=1;i<=m;i++){cin>>a[i];vis[a[i]]=1;}sort(a+1,a+m+1);bool flag;int j=1;int amount=0;for(int i=1;i<=m;i++){flag=false;for(;j<=n*m;j++){if(!vis[j]&&j>a[i]){flag=true;j++;break;}}if(flag) amount++;}printf("Case %d: %d\n",t,m-amount);}return 0;}