1 条题解
-
0
自动搬运
来自洛谷,原作者为

Give_up
**搬运于
2025-08-24 22:39:07,当前版本为作者最后更新于2022-07-25 19:22:57,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
题目思路
此题就是一道简单的贪心,先从小到大排序(也可以从大到小),取能买的起的最贵的物品。
找到后从小到大遍历,求能买的起的价值最高的的物品最多能换到多少其他的物品,用一个计数器计数,最后输出这个计数器的值就行了。
代码
#include<bits/stdc++.h> #define int long long //a[i]的范围很大,要开long long #define N 1000010 using namespace std; typedef long long ll; int read() { int x = 0,f = 1; char c = getchar(); while(c<'0' || c>'9') { if(c=='-') f = -1; c = getchar(); } while(c>='0' && c<='9') { x = (x<<3)+(x<<1)+(c^48); c = getchar(); } return x*f; }//快读 int a[N]; signed main() { int n=read(); for (int i=1;i<=n;i++) a[i] = read(); int w=read(),k=0; sort(a+1,a+n+1); //从小到大排序 for (int i=n;i>=1;i--) { if (w>=a[i]) { k = a[i]; break; } }//求能买的起的最贵的物品 int ans = 0;//定义一个计数器,初始值为0 for (int i=1;i<=n;i++) { if (k>=a[i]) { ans++;//计数器+1 k -= a[i]; } }//求能买的起的价值最高的的物品最多能换到多少其他的物品 cout << ans << endl;//输出计数器的值 return 0; }
- 1
信息
- ID
- 7580
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 2
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者