社区讨论
【玄关】贪心求证明或证伪
学术版参与者 5已保存回复 14
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 14 条
- 当前快照
- 1 份
- 快照标识符
- @m56kbnk0
- 此快照首次捕获于
- 2024/12/27 17:40 去年
- 此快照最后确认于
- 2025/11/04 23:18 4 个月前
题目描述
学校组织学生进行户外素质拓展活动,小T班级的同学正在操场上进行一个名为”扎堆“的小游戏。
首先班级里 名同学的背后都贴着一个整数号码牌 ,游戏开始时,班主任会喊出一个整数数字 ,在场的同学必须迅速”扎堆“,分成若干小队。
每个小队组成人数不限,可以是单独 个人,也可以所有人都聚成一队,自由组合。但是小队得分小于 的小队会被淘汰。得分计算规则是:
请问最多可能出现多少支小队达到得分要求?
输入格式
第一行一个整数 ,表示班主任喊出的数字。
第二行一个整数 ,表示参与游戏的学生人数。
接下来 行,每行一个整数
,对应每个学生背后的号码牌数字。
输出格式
输出一个整数,表示最多能达到得分要求的小队数量。
思路
令 为当前小队的人数,设 。
将数组从大到小排序, 遍历数组,并将 加入这个小队, 加一。当 时, 加一,重置 。
求大佬证明或证伪,谢谢!
CPP#include<bits/stdc++.h>
using namespace std;
int x,n,cnt=0,ans;
int arr[1145144];
bool cmp(int a,int b) {
return a>b;
}
int main()
{
cin>>x>>n;
for(int i=0;i<n;i++) {
cin>>arr[i];
}
sort(arr,arr+n,cmp);
for(int i=0;i<n;i++) {
cnt++;
if (cnt*arr[i]>=x) {
ans++;
cnt=0;
}
}
cout<<ans<<endl;
}
(这份代码 AC 了,但不知道对不对)
回复
共 14 条回复,欢迎继续交流。
正在加载回复...