B. Going to the Cinema
2024-09-08 19:13:09
https://codeforces.com/contest/1782/problem/B
题目大意就是给定n个人,每个人有一个除自己之外的最少陪同人数,选一部分人去电影院,要求去的人人数大于等于去的每个人要陪同的人数,不去的人要求陪同的人数要大于要求去的人数
废话不多说上代码
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N=2e5+10;
int a[N],p[N];
int t;
int main(){
cin>>t;
while(t--){
int n;
cin>>n;
int m=0;
memset(p,0,sizeof p);
for(int i=1;i<=n;i++){
int x;
cin>>x;
if(p[x]==0) a[++m]=x;//记录每种陪同人数
p[x]++;//记录每种陪同人数的个数
}
sort(a+1,a+1+m);
//我们这里先排序,当序列由小到大时,我们发现如果后面的能去的话,前面的必须得去
int res=0,num=0;
//注意人数减一是因为不包含自己
for(int i=1;i<=m;i++){
if(num<a[i]&&max(num-1,0)>=a[i-1]) res++;//对于方案来说,如果该人不去是合法的则方案数加一
num+=p[a[i]];
}
if(num-1>=a[m]) res++;//最后判断一下是否所有人去都合法
cout<<res<<endl;
}
}
最新文章
- Android模拟位置信息
- lisp等
- nginx--配置https服务器
- MySQL对于数据库应该如何如何配置安全问题了
- 用js实现返回上一页
- 前端面试库_JS部分_02
- UIStackView 看我就够了
- AngularJS 路由:ui-router
- Python自带的日志模块logging的使用
- poj 3320 Jessica&#39;s Reading Problem(尺取法)
- j2se总结
- ASP.NET 程序发布详细过程
- Python学习--10 面向对象编程
- 機器學習基石 (Machine Learning Foundations) 作业1 Q15-17的C++实现
- C语言--第六周作业
- bzoj4919 [Lydsy1706月赛]大根堆
- 【我们一起写框架】MVVM的WPF框架(四)—DataGrid
- 【原创】Java基础之常用JVM工具
- 20155312 张竞予 Exp2 后门原理与实践
- Java中map集合系列原理剖析