B. Young Explorers 题目链接-B. Young Explorers
文章图片
文章图片
题目大意
每人都有一个组队人数,值为 a i a_i ai?的人只能加入人数大于等于 a i a_i ai?个人的团,求最多能组成多少个团.
解题思路
贪 心 贪心 贪心
- 先将数列从小到大排序,然后
for
循环遍历 - 用
cnt
计数,所此时cnt==a[i]
说明能凑成一队了,直接ans++
,并将cnt
清零一边重新计数 - 具体操作见代码
#pragma GCC optimize("-Ofast","-funroll-all-loops")
#include
#define int long long
#define lowbit(x) (x &(-x))
#define endl '\n'
using namespace std;
const int INF=0x3f3f3f3f;
const int dir[4][2]={-1,0,1,0,0,-1,0,1};
const double PI=acos(-1.0);
const double e=exp(1.0);
const double eps=1e-10;
const int M=1e9+7;
const int N=2e5+10;
typedef long long ll;
typedef pair PII;
typedef unsigned long long ull;
inline void read(int &x){
char t=getchar();
while(!isdigit(t)) t=getchar();
for(x=t^48,t=getchar();
isdigit(t);
t=getchar()) x=x*10+(t^48);
}
int a[N];
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int t;
cin>>t;
while(t--){
int n,ans=0;
cin>>n;
for(int i=0;
i>a[i];
sort(a,a+n);
for(int i=0,cnt=0;
i=a[i]){
ans++;
cnt=0;
}
}
cout<
推荐阅读
- codeforces B. Young Explorers
- codeforces C. Mere Array
- codeforces D. Omkar and Bed Wars
- codeforces C. Omkar and Waterslide
- codeforces B. Omkar and Infinity Clock
- codeforces B. Ternary Sequence
- 题库-CF|【Codeforces Round 370 (Div 2) E】【线段树 等比数列 区间合并】Memory and Casinos 赌场区间[l,r] l进r先出的概率
- 题库-CF|【Codeforces Round 263 (Div 2)C】【贪心 哈弗曼思维】Appleman and Toastman 每个非1size子树延展为2子树的最大权
- Codeforces|Codeforces Round #605 (Div. 3) D. Remove One Element
- Codeforces|Codeforces Round #643 (Div. 2) B.Young Explorers