- 分享
Day2 总结(第一题)
- @ 2024-10-3 19:12:15
1.神秘金币 题目描述 在一个古老的文明中,有一种神秘的金币。你是一名考古学家,偶然发现了这个文明的遗址,现在是时刻0,有n枚金币同时被发现。第i枚金币会在t[i]时刻后消失,它的价值u[i]。然而,由于地形和其他条件的限制,你每个时刻只能收集一枚金币。此外,你的背包有限,你最多只能收集 k枚金币。现在,你面前有 n 枚金币,你的任务是确定如何选择金币,以便在收集的金币数量不超过 k 的前提下,最大化你可以获取的金币价值总和。
注意:金币被收集到背包之后就不会消失了。
这题使用贪心算法,只考虑价值,不考虑时间,将价值排序后把k个数相加即可。(升序就把后k个数相加,降序就把前k个数相加。代码排序为升序)
代码:
#include<bits/stdc++.h>
using namespace std;
int v[100010];
int n,k,t;
int main(){
freopen("coin.in","r",stdin);
freopen("coin.out","w",stdout);
cin>>n>>k;
for(int i=0;i<n;i++) cin>>t;
for(int i=0;i<n;i++) cin>>v[i];
sort(v,v+n);
long long ans=0;
for(int i=n-1;i>=n-k;i--) ans+=v[i];
cout<<ans;
return 0;
}
0 条评论
目前还没有评论...