1030 完美数列 (25 分)

摺耳喵 2019-11-22 03:09:57
帮忙找个测试点吧,真的找不到了
https://pintia.cn/problem-sets/994805260223102976/problems/994805291311284224
给定一个正整数数列,和正整数 p,设这个数列中的最大值是 M,最小值是 m,如果 M≤mp,则称这个数列是完美数列。

现在给定参数 p 和一些正整数,请你从中选择尽可能多的数构成一个完美数列。

输入格式:
输入第一行给出两个正整数 N 和 p,其中 N(≤10^​5​​ )是输入的正整数的个数,p(≤10^​9​​ )是给定的参数。第二行给出 N 个正整数,每个数不超过 10^​9​​ 。

输出格式:
在一行中输出最多可以选择多少个数可以用它们组成一个完美数列。

输入样例:
10 8
2 3 20 4 5 1 6 7 8 9
输出样例:
8
#include <iostream>
#include <set>
using namespace std;
int main() {
int N, tmp;
long p;
cin >> N >> p;
multiset<int>st;
for (int i = 0; i < N; ++i) {
cin >> tmp;
st.insert(tmp);
}
int cnt = 0;
for (auto& it : st) {
if (*st.rbegin() <= it * p)
break;
cnt++;
}
cout << st.size() - cnt;
return 0;
}
...全文
180 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
摺耳喵 2019-11-22
  • 打赏
  • 举报
回复
引用 8 楼 wowpH的回复:
不过有个思路:滑动窗口(双指针)。 这题在你发之前我也没做出来。今天刚做出来的。(果然,刷力扣还是有用的)
我找到了,不管怎么说谢啦
wowpH 2019-11-22
  • 打赏
  • 举报
回复
不过有个思路:滑动窗口(双指针)。 这题在你发之前我也没做出来。今天刚做出来的。(果然,刷力扣还是有用的)
摺耳喵 2019-11-22
  • 打赏
  • 举报
回复
引用 6 楼 wowpH 的回复:
那我就不知道了。我对C++不熟

好的我自己再纠结一会儿
wowpH 2019-11-22
  • 打赏
  • 举报
回复
引用 5 楼 qq_45798109 的回复:
[quote=引用 2 楼 wowpH 的回复:] 找到了我的错误,要用long long。。。。。。。 你的可能也是这个原因。第15行的乘法会超过int型范围。
应该不是类型的问题[/quote]那我就不知道了。我对C++不熟
摺耳喵 2019-11-22
  • 打赏
  • 举报
回复
引用 2 楼 wowpH 的回复:
找到了我的错误,要用long long。。。。。。。
你的可能也是这个原因。第15行的乘法会超过int型范围。

应该不是类型的问题
wowpH 2019-11-22
  • 打赏
  • 举报
回复
找到了我的错误,要用long long。。。。。。。 你的可能也是这个原因。第15行的乘法会超过int型范围。
wowpH 2019-11-22
  • 打赏
  • 举报
回复
我用C写的。最后一组数据过不去。

65,189

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧