2010-1161

从 Trac 迁移的文章

这是从旧校内 Wiki 迁移的文章,可能存在一些样式问题,您可以向 memset0 反馈。

原文章内容如下:

by  yuxingdubai

做法:
{{{
一道简单的贪心..(难得asmn出一次不是大自然的题..)
思路就是把对手的智商按从低到高排个序.
然后从低到高扫一遍, 如果智商<=你当前智商, 就放到最后去比, 因为你的智商只会上升不会下降, 无论什么时候和他比都只能+1点
如果智商比你高就马上比, 因为他是智商比你高的人里最低的, 把他排在后面可能就只能+1点了, 现在比能加2点, 而且排在后面你接下来无论和谁比都是+2. 显然要和这个最低的比. 
在实现的时候只要用一个初始为0的int变量来存一下智商比你低的人的数量就行了.
}}}

代码:
{{{
#!cpp
#include<cstdio>
#include<algorithm>
using namespace std;
int main(){
    int n, ip, iq[500];
    while(2==scanf("%d%d",&n,&ip)){
        for(int i=0;i<n;i++) scanf("%d",iq+i);
        sort(iq, iq+n);
        int k=0;
        for(int i=0;i<n;i++){
            if(iq[i]<=ip) k++;
            else ip+=2;
        }
        printf("%d\n", ip+k);
    }
    return 0;   
}
}}}

by yuxingdubai

做法:

一道简单的贪心..(难得asmn出一次不是大自然的题..)
思路就是把对手的智商按从低到高排个序.
然后从低到高扫一遍, 如果智商<=你当前智商, 就放到最后去比, 因为你的智商只会上升不会下降, 无论什么时候和他比都只能+1点
如果智商比你高就马上比, 因为他是智商比你高的人里最低的, 把他排在后面可能就只能+1点了, 现在比能加2点, 而且排在后面你接下来无论和谁比都是+2. 显然要和这个最低的比. 
在实现的时候只要用一个初始为0的int变量来存一下智商比你低的人的数量就行了.

代码:

#include<cstdio>
#include<algorithm>
using namespace std;
int main(){
    int n, ip, iq[500];
    while(2==scanf("%d%d",&n,&ip)){
        for(int i=0;i<n;i++) scanf("%d",iq+i);
        sort(iq, iq+n);
        int k=0;
        for(int i=0;i<n;i++){
            if(iq[i]<=ip) k++;
            else ip+=2;
        }
        printf("%d\n", ip+k);
    }
    return 0;   
}