4534: T1 金灿灿的币

题目描述

在一个古老的文明中,有一种神秘的金灿灿的币。程小盟是一名考古学家,偶然发现了这个文明的遗址, 现在是时刻  0,有 i枚金币同时被发现。第i枚金币会在  ti    时刻后消失,它的价值是  vi。然而,由于地形和其他条件的限制,小盟每个时刻只能收集一枚金币。此外,小盟的背包有限, 小盟最多只能收集k枚金币。现在,小盟面前有n枚金币,小盟的任务是确定如何选择金,  
以便在收集的金币数量不超过 k的前提下,最大化小盟可以获取的金币价值总和。

注意:金币被收集到背包之后就不会消失了。大样例:sample.zip
 


 

输入格式

第一行包含两个整数 n  和 k,表示金币的数量和小盟最多可以收集的金币数量。

第二行包含 n  个整数  ti    ,表示每枚金币的存在时间。(1 ≤   ti  ≤ n  且所有    ti 不重) 第三行包含 n  个整数 vi    ,表示每枚金币的价值。

输出格式

输出一个整数,表示小盟最多可以获取的金币价值总和。

样例输入content_copy

5 2
1 2 4 3 5
3 2 1 2 2

样例输出content_copy

5

提示/说明

小盟可以在第一个单位时间收集价值为 3 的金币,然后在第二个单位时间收集价值为  2 的金 币,所以最大的金币价值总和是 5。

样例 2  输入
4 2

1 3 4 2

4 1 3 2

样例 2  输出
 

7

每 组 数 据 点     10      分 , 共     10      组 数 据  。 其  中 1 ≤  ti  ≤ n  且 保 证 不 重 复 。


 

#include<bits/stdc++.h>
using namespace std;
int array_x[100010];
int array_y[100010];
bool cmp(int u,int v){
	return u>v;
}
int main(){
	int input1,input2;
	cin>>input1>>input2;
	for(int i=1;i<=input1;i++){
		cin>>array_x[i];
	}
	for(int i=1;i<=input1;i++){
		cin>>array_x[i];
	}
	sort(array_x+1,array_x+input1+1,cmp);
	long long k=0;
	for(int i=1;i<=input2;i++){
		k+=array_x[i];
	}
	cout<<k;
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值