专栏文章
题解:CF846B Math Show
CF846B题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @miqjscw6
- 此快照首次捕获于
- 2025/12/04 05:57 3 个月前
- 此快照最后确认于
- 2025/12/04 05:57 3 个月前
题目传送门
思路:
考虑用模拟得到最优的方式。首先枚举可以完成 个大的任务,然后循环找到从时间到最大的,其实就是暴力求解,数据不大。
AC Code
CPP#include<bits/stdc++.h>
#define int long long//注意不开long long见祖宗
using namespace std;
int a[45], n, k, m;
signed main() {
while (cin >> n >> k >> m) {
int sum = 0;
for (int i = 1; i <= k; i++) {
cin >> a[i],
sum += a[i];
}
stable_sort(a + 1, a + k + 1);//稳定排序一下
int ans = 0;
for (int i = 0; i <= n; i++) {
if (m < i * sum) break;
int cnt = m - i * sum, t = i * (k + 1);
for (int j = 1; j < k; j++) {
for (int p = 1; p <= n - i; p++) {
if (cnt >= a[j]) t++,
cnt -= a[j];
}
}
ans = max(ans, t);
}
cout << ans << "\n";
}
return 0;
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...