参考:
态度决定高度的blog zoj 3519 Who is the Smartest Man
无上阳光13的博客 Who is the Smartest Man
Problem Description
Cao Cao is very pround of his newly finished book named "The Book of Mengde". He thinks the book contains all the wisdom of the world. But in order to prove this, he need to prove that he is the smartest people in the world first. In that age, people evaluate the intelligence of a man by his eloquence. So, Cao Cao begins tomake a plan to argue with some famous person, like Guo Jia, Xun Yu and so on.Soon he realizes that the hardest opponent is Zhuge Liang. So he decide to make it the last opponent. Once he defeat Zhuge Liang in the argument. he will beconsider the smartest man in the world and his book will be the best book.
Now, Cao Cao knows the intelligent point of himself and everyone he want to argue with before Zhuge Liang. And he knows that if he wins an argument. His intelligent point will increase because he can learn something from the argument. If he defeats a opponent whose intelligent point is higher than his, his intelligentpoint will increase by 2. If the intelligent point of the opponent is nothigher than his, his intelligent point will only increase by 1.
Now, Cao Cao wants to know, what's the maximum intelligent point he could reach before he meets Zhuge Liang, assuming that he can win each argument before he meets Zhuge Liang.
Input
This problem contains multiple test cases. The first line of each case contains two postive integer N ( N <= 500) and IP . N is the number of people Cao Cao wants to argue with before he meets Zhuge Liang. IP is the intelligent point of Cao Cao at the begining. Then N postive integers followed describing the intelligent point of each opponent. Each intelligent point will be no higher than 1000.
Output
For each case, output the maximum intelligent point Cao Cao can reach before he argue with Zhuge Liang.
Sample Input
5 91
88 90 92 94 98
Sample Output
99
曹操如果打败一个智育比自己高的人,则曹操的智育+2,否则+1。 如果曹操按任意顺序打败对手,曹操最终智育最高是多少?
贪心,分为两类一个是智育比当前分数高的,令一类是第的;如果是第二类的话,那么直接每个对手只能+1,在第一类中贪心的选择比自己智育高的最小的那个人
#include<stdio.h> #include<stdlib.h> int cmp(const void *a,const void *b){ return (*(int *)a) - (*(int *)b); } int main(){ int ip[505]; //存放每个人的智商值; int last; int num_people;//人数 int cao_ip; //曹操的ip int i; while(~scanf("%d%d",&num_people,&cao_ip)){ for(i = 0;i<num_people;++i){ scanf("%d",&ip[i]); } qsort(ip, num_people,sizeof(int),cmp); last = 0; for(i = 0; i < num_people; ++i) { if(cao_ip < ip[i]) { cao_ip +=2; }else{ ++last; } } printf("%d\n",cao_ip + last); } return 0; }