小 A 的卡牌游戏(Gym - 103186B)
创始人
2024-01-30 19:42:21

小A最近沉迷于-款名为Hearthverse的卡牌游戏。在这款游戏中,卡被分为了三个种类(随从、法术和魔法阵),在组卡时,这款游戏严格规定了卡组中每种卡牌的数量,具体来说,-副n张卡的卡组需要包含恰好a张随从卡,b张法术卡和c张魔法阵卡,并且a+b+c= n。

在游戏中,有一个叫做"3pick"的组卡竞技方式,游戏会给出n次三选一 的机会,三张卡分别来自三个种类。每次玩家需要从三张卡中选出一-张卡加入自己的卡组。为了使卡组强度尽量高,小A给每张卡设定了一个强度值,而卡组的强度就是所有卡强度值的和,他希望他最后组出的卡组的强度可以尽量高。

Input

第一行有四个整数n,a,b,c(1 < a,b,c< n≤5000,a+b+c= n),分别表示卡组的总卡数与每种种类的卡的张数要求。

接下来n行,每行代表一次"3pick"的机会,第i行有三个整数a,b,C,(1 < a,b,C < 109)分别表示这一次选择中随从卡、法术卡和魔法阵卡的强度值。

Output

在一行输出一个整数,表示 小 A 能组出的卡组的最大强度值。

Sample 1

Inputcopy

3 1 1 1
4 1 6
1 1 10
5 7 4

Outputcopy

21

Sample 2

Inputcopy

6 3 2 1
1000000000 1 1
1000000000 1 1
1000000000 1 1
1 1000000000 1
1 1000000000 1
1 1 1000000000

Outputcopy

6000000000

题解

在这里插入图片描述

假如就只有A和B,种类要求 1 1 ,按照b-a递减排序

BA
400300
10097
那么它的最优就是400+97

A和B 要求 2 3

BA
400300
10097
9996
42
100100
那么它的最优就是400+100+96+2+100 或 400+99+97+2+100 因为第二行和第四行都是 b-a=3 谁在前谁在后答案都一样

代码1

#include "bits/stdc++.h"
using namespace std;
#define int long long
int dp[5010][5010];
struct ppp
{int a,b,c;bool operator <(const ppp &z) const{if(b-a==z.b-z.a) return c>z.c;return b-a>z.b-z.a;}}p[5010]; 
signed main()
{//ios::sync_with_stdio(0);//cin.tie(nullptr);int n,A,B,C;cin>>n>>A>>B>>C;for(int i=1;i<=n;i++)cin>>p[i].a>>p[i].b>>p[i].c;sort(p+1,p+n+1);for(int i=1;i<=n;i++){for(int j=0;j<=min(i,C);j++){if (j) dp[i][j] = dp[i - 1][j - 1] + p[i].c;if(i==j) continue;////  if(i==j)  就代表dp[i-1][j]不存在 //	i代表遍历了1 到  i //  j代表在   1  到  j 中  取了j个c //  不存在  i

代码 2

#include "bits/stdc++.h"
using namespace std;
#define int long long
int dp[5010][5010];
struct ppp
{int a,b,c;bool operator <(const ppp &z) const{if(b-a==z.b-z.a) return c>z.c;return b-a>z.b-z.a;}}p[5010]; 
signed main()
{//ios::sync_with_stdio(0);//cin.tie(nullptr);int n,A,B,C;cin>>n>>A>>B>>C;for(int i=1;i<=n;i++)cin>>p[i].a>>p[i].b>>p[i].c;sort(p+1,p+n+1);// dp[i][j]代表 前 i 组卡中 取 j个c(取j张魔法阵卡) //  不存在  ifor(int j=i+1;j<=n;j++)dp[i][j]=-1e9;}for(int i=1;i<=n;i++){for(int j=0;j<=min(i,C);j++){if (j) dp[i][j] = dp[i - 1][j - 1] + p[i].c;if (i - j <= B) dp[i][j] = max(dp[i][j], dp[i - 1][j] + p[i].b);else dp[i][j] = max(dp[i][j], dp[i - 1][j] + p[i].a);/*if(j)也 if(i-j<=B)max(dp[i][j],dp[i-1][j]+v[i].b);dp[i][j]里面包含当前的p[i].c;但dp[i-1][j]+v[i].b不包含当前的p[i].c;就是说 dp[i][j]第j个c是v[i].c;但 dp[i-1][j]+v[i].b第j个c要不是第i-1个c要不就是第i-1前面的c*///i遍历到的是1到第i个c//i-1遍历到的是1到第i-1个c}}cout<

相关内容

热门资讯

长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
1秒多少毫秒 1秒等于多少毫秒... 长度单位换算1丈=10尺;1尺=10寸;1寸=10分;1分=10厘;1丈≈3.33米;1尺≈3.33...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
中国电信人工电话多少 中国电信... 当我们在使用中国移动、中国电信和中国联通提供的电信业务时,可能会发生争议。建议直接向服务提供商投诉,...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...