/*********************************************************************************************************************** 题意:纸牌游戏,有m个人 每人n张牌 每人每轮出一张 点数最大的获胜 求至少获胜的次数 思路:把自己手里的牌降序排序 再把对手的牌降序排序 从大的出 如果自己的牌比对手小 则无法获胜 否则获胜 **********************************************************************************************************************/ #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> using namespace std; int a[1000+10], b[1000+10]; bool cmp(int a, int b) { return a > b; } int main() { //freopen("data.in" , "r" , stdin); int m , n ; int cas = 0; while(scanf("%d %d", &m, &n) && m + n) { memset(a , 0 ,sizeof(a)); int num = 0; for(int i = 0 ; i < n ; i ++) scanf("%d", &a[i]); sort(a, a + n, cmp); for(int i = n * m, j = 0 ; i > 0 ; i --) { if(i == a[num]) { num++; continue; } b[j++] = i; } int ans = 0; for(int i = 0, j = 0 ; i < n ; i ++) { if(a[i] < b[j]) j++; else ans++; } printf("Case %d: %d\n" ,++cas ,ans); } }
【贪心】【HDOJ-1338】Game Prediction
原文:http://www.cnblogs.com/ahu-shu/p/3558547.html