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;
}