文章目录
- 回顾
- 代码
- 思路
回顾
- A+B III
- 问题 H: 三角数
- 问题 G: 3个数
- 等式 数组下标查询,降低时间复杂度
- 1405 问题 E: 世界杯
- xtu 数码串
- xtu oj 神经网络
- xtu oj 1167 逆序数(大数据)
- xtu oj 原根
- xtu oj 不定方程的正整数解
- xtu oj 最多的可变换字符串
- xtu oj String I
- xtu oj 字母序列
- xtu oj 分段
- xtu oj 完全平方数II
- xtu oj 连接字符串
- xtu oj 2021
- xtu oj 数字
- xtu oj 删除
代码
#include<stdio.h>
#define N 10010
int a[N];
void sort(int q[],int l,int r){//快速排序模板if(l>=r){return;}int i=l-1,j=r+1,x=q[(l+r)/2];while(i<j){do{i++;}while(q[i]<x);do{j--;}while(q[j]>x);if(i<j){int temp=q[i];q[i]=q[j];q[j]=temp;}}sort(q,l,j);sort(q,j+1,r);
}
int main(){int t;scanf("%d",&t);while(t--){int n;scanf("%d",&n);//所有朋友的个数for(int i=0;i<n;i++){scanf("%d",&a[i]);}sort(a,0,n-1);int sum=1;//现在有多少人来聚会了int ans=0;//会来多少朋友for(int i=0;i<n;i++){if(a[i]<=sum){//至少来 sum 个朋友,i 这个朋友就会来ans++;//多一个朋友来sum++;//聚会的总人数多一个}}printf("%d\n",ans);}return 0;
}
思路
#include<stdio.h>
#define N 10010
int a[N];
int main(){int t;scanf("%d",&t);while(t--){int n;scanf("%d",&n);//所有朋友的个数for(int i=0;i<n;i++){scanf("%d",&a[i]);}int sum=1;//现在有多少人来聚会了int ans=0;//会来多少朋友for(int i=0;i<n;i++){if(a[i]<=sum){//至少来 sum 个朋友,i 这个朋友就会来ans++;//多一个朋友来sum++;//聚会的总人数多一个}}printf("%d\n",ans);}return 0;
}
为啥直接 WA
了,样例也能过,然后也不会出现需要用 long long
的情况。嗷嗷,不是按照顺序排的。哈哈哈。贪心地做,就是让那种要求低的朋友排在前面,这样来聚会的人就会尽可能多。
排序一下就过了,幸福。
但是我这里写了一个快速排序的模板,有没有啥简单一点的办法来排序呢?要是找到了更好的办法会更新在评论区。