纸牌游戏

题目链接

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;
}
全部评论

相关推荐

KPLACE:首先是板面看起来不够,有很多奖,比我厉害。项目要精减,大概详细描述两到三个,要把技术栈写清楚,分点,什么算法,什么外设,怎么优化,不要写一大堆,分点,你写上去的目的,一是让别人知道你做了这个知识点,然后在面试官技术面的时侯,他知道你会这个,那么就会跟你深挖这个,然后就是个人评价改为专业技能
点赞 评论 收藏
分享
2024-12-23 12:44
门头沟学院 Java
黑皮白袜臭脚体育生:简历统一按使用了什么技术实现了什么功能解决了什么问题或提升了什么性能来写,如使用标签实现了兴趣推送,提升了用户黏性另外宣传下自己的开源仿b站微服务项目,GitHub已经390star,牛客上有完整文档教程,如果觉得有帮助的话可以点个小星星,蟹蟹
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务