纸牌游戏

题目链接

https://ac.nowcoder.com/acm/contest/7606/B

解题思路

每个人的回合要淘汰尽可能多的人,所以肯定优先淘汰手牌少的。
谁的手牌少?那些抽得的手牌数比被抽走的手牌数少的人吧。
我们根据抽取数量的多少从小到大将他们排序,顺序遍历,因为我们要先淘汰容易淘汰的吧,也就是获取手牌数量少的;若此人可获取的手牌数量比在场剩下的人(不包括他自己)的数量都少,说明他的手牌数量在减少,每轮都减少,肯定最终被淘汰;将每个人都遍历一遍,最后剩下的就是无法被淘汰的人数。

AC代码

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+100;
int main(){
    int now,n,a[N];
    cin>>n;
    for(int i=1;i<=n;i++) cin>>a[i];
    sort(a+1,a+n+1);
    now=n;
    for(int i=1;i<=n;i++){
        if(a[i]<now-1) now--;
    }
    cout<<now<<endl;
}
全部评论

相关推荐

03-05 17:03
已编辑
浙江工商大学 C++
陈好好wy:整体看下来有点空空的感觉,可以把每一段项目经历都再完善一下,然后用小标题的形式写个两到三条,目前看有点太简单了,不太能看出具体在这个项目里做了什么工作。还是要尽量把自己做的工作以量化的形式体现在简历上呢。
双非本科求职如何逆袭
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务