本文主要是介绍[ABC334D] Reindeer and Sleigh,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目链接:[ABC334D] Reindeer and Sleigh - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
题意翻译
有 N 个雪橇,其中第 i 个雪橇需要 Ri 匹驯鹿来拉。每匹驯鹿最多拉一个雪橇。现有 Q 次询问,每次询问给你 X ,问你如果有 X 匹驯鹿,最多能拉多少个雪橇?
第一行输入 N,Q,第二行输入 Ri,接下来每行输入一个询问。
输入输出样例
输入
4 3 5 3 11 8 16 7 1000
输出 #1复制
3 1 4
输入
6 6 1 2 3 4 5 6 1 2 3 4 5 6
输出
1 1 2 2 2 3
输入
2 2 1000000000 1000000000 200000000000000 1
输出
2 0
AC代码:
#include<iostream>
#include<algorithm>using namespace std;const int N = 2e5 + 10;
long long a[N],s[N];int main()
{long long n,q;cin >> n >> q;for(int i=1;i<=n;i++) cin >> a[i];sort(a+1,a+n+1);for(int i=1;i<=n;i++) s[i] = s[i-1] + a[i];long long ans = 0;long long x = 0;while(q--){scanf("%lld",&x);long long l = 1,r = n;while(l < r){long long mid = l + r + 1 >> 1;if(s[mid] <= x) l = mid;else r = mid - 1;}if(s[l] <= x) cout << l << endl;else cout << 0 << endl;}return 0;
}
这篇关于[ABC334D] Reindeer and Sleigh的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!