小 A 的卡牌游戏(Gym - 103186B)

news2025/7/30 9:53:49

小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<j   如 i=3 j=3  dp[i-1][j]=dp[2][3]  2组卡里,取了3张魔法阵卡
			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<<dp[n][C];
}	
 

代码 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张魔法阵卡) 
	//  不存在  i<j   如 i=3 j=3  dp[i-1][j]=dp[2][3]  2组卡里,取了3张魔法阵卡
	for(int i=0;i<=n;i++)
	{
		for(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<<dp[n][C];
}	
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/16228.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Tdengine技术实践

1. 什么是时序数据库&#xff1f; 时序数据库全称为时间序列数据库。 即时间序列数据&#xff0c;按时间维度顺序记录且索引的数据。 时间序列数据主要由 电力行业、化工行业、气象行业、地理信息 等各类型实时监测、检查与分析设备所采集、产生的数据&#xff0c;这些工业数…

配置Maven环境

Maven官网 Maven所有发行版本 一、windows配置maven环境 想要使用maven就必须要有JDK JDK安装 百度网盘下载&#xff08;二进制文件&#xff0c;一直点下去&#xff09; 链接&#xff1a;https://pan.baidu.com/s/1y1AutzJeQGdNHa2ml_bk8w 提取码&#xff1a;scyc验证JDK是…

【Java八股文总结】之Java基础

写在前面&#xff1a; 整份Java八股文的整理贯穿我的整个秋招&#xff0c;希望可以给大家带来帮助&#xff0c;如果对你有一定的作用&#xff0c;欢迎大家转发点赞&#xff0c;谢谢&#xff01;在复习Java八股文的过程中&#xff0c;有两位老哥的博文对我帮助比较大&#xff0c…

力扣(LeetCode)10. 正则表达式匹配(C++)

动态规划 基于闫式dp分析法。 综上 , f[i][j]{f[i−1][j−1]&&(s[i]p[j]∣∣′.′p[j])if p[j]≠∗f[i][j−2]∣∣(f[i−1][j]&&(s[i]p[j−1]∣∣′.′p[j−1])if p[j]∗f[i][j] \begin {cases} f[i-1][j-1] ~~\&\& ~~(s[i]p[j] ~||~ .p[j])&…

鲁棒局部均值分解 (RLMD)附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

安卓手机丢了,危险了!意外的7万美元的谷歌Pixel绕过锁屏

我发现了一个影响似乎所有谷歌Pixel手机的漏洞&#xff0c;如果你把任何锁定的Pixel设备给我&#xff0c;我可以把它解锁还给你。这个漏洞刚刚在2022年11月5日的安全更新中得到修复。 该问题允许有物理权限的攻击者绕过锁屏保护&#xff08;指纹、PIN等&#xff09;&#xff0c…

英国博士后招聘|林肯大学—植物-土壤相互作用

英国林肯大学博士后职位—植物 -土壤相互作用 林肯大学&#xff08;University of Lincoln&#xff09;&#xff0c;简称“UoL”&#xff0c;是英国一所公立综合性研究型大学&#xff0c;创办于1861年&#xff0c;后与多所大学合并更名为林肯大学。 《独立报》曾评价林肯大学为…

Mysql之性能优化分析

一、避免死锁 1.1、导致mysql死锁的要素 1、两个或者两个以上事务。 2、锁资源只能被同一个事务持有或者多个事务竞争的锁是不兼容的&#xff0c;比如排他锁和共享锁、排他锁和排他锁。 3、每个事务都已经持有锁并且申请新的锁。 4、事务之间因为持有锁和申请锁导致彼此循环等…

Cesium 简介

Cesium 简介 一、Cesium 是什么&#xff1f; Cesium 是一个开源 JavaScript 库&#xff0c;用于 3D , 2D , 2.5D 地图可视化。 Cesium 由 AGI 公司计算机图形开发小组与 2011 年研发的。 Cesium 一词来源于化学元素铯&#xff0c;铯是制造原子钟的关键元素&#xff0c;研发小组…

Vue框架实现对前端数据表的增删改查(第六课)

前端对数据的增删改查你看到过吗?今天带你来实现一下在前端就页面上实现对数据的增伤改查 第一部分功能演示 先看下页面效果 增加一条数据 删除一条数据 修改一条数据 查询指定的一条记录 第二部分 上面的功能该如何实现的呢&#xff01;首先又是页面改如何展示…

吃豆人游戏-第12届蓝桥杯Scratch选拔赛真题精选

[导读]&#xff1a;超平老师计划推出Scratch蓝桥杯真题解析100讲&#xff0c;这是超平老师解读Scratch蓝桥真题系列的第79讲。 蓝桥杯选拔赛每一届都要举行4~5次&#xff0c;和省赛、国赛相比&#xff0c;题目要简单不少&#xff0c;再加上篇幅有限&#xff0c;因此我精挑细选…

基于PHP+MySQL的在线投票系统设计与实现

随着时代的发展,人们需要获取更多的信息和用户的意见,这时候就会产生一个投票。转托管模式都是人工发传单,然后填写来进行。但是随着互联网的发展,这种模式已经逐渐被淘汰,人们越来越希望通过更加方便快捷的方式来进行在线投票。这就是在线投票系统,这是我们设计本系统一个初衷…

传奇GOM/GEE微端配置外网架设教程

传奇GOM/GEE微端配置外网架设教程 我是艾西&#xff0c;经常听到一些小伙伴说微端需要购买&#xff1f;其实大家理解错了&#xff0c;传奇微端自己就可以搭建的是不需要购买的&#xff0c;如果是说单独架设到另外一台服务器上那么这才是需要收费的俗称微端服务器。主要用于跑带…

Nginx+keeplived高可用

目录 一、环境准备 1、准备3台centos服务器 2、安装软件 二、keepalived配置 三、nginx进程监视脚本 一、环境准备 1、准备3台centos服务器 服务器名主机名IPVIPNginx代理服务器proxy1192.168.1.10192.168.1.100Nginx代理服务器proxy2192.168.1.20web网站服务器web1192.…

TikTok 的 TAP好货分销服务商招募啦,最新入驻政策速来了解

众所周知&#xff0c;以抖音快手平台为主的内容电商对于国内来说已经司空见惯&#xff0c;内卷到极致&#xff0c;但是对于国外来说还是一个比较新奇的领域。 而海外版抖音 TikTok就成功实现了内容电商的出海&#xff0c;将电商直播带出国门&#xff0c;面向全世界。为了完善T…

【16-配置中心之Nacos的基本使用Nacos服务之命令空间、Nacos服务之配置组、Nacos服务之配置拆分】

一.知识回顾 【0.三高商城系统的专题专栏都帮你整理好了&#xff0c;请点击这里&#xff01;】 【1-系统架构演进过程】 【2-微服务系统架构需求】 【3-高性能、高并发、高可用的三高商城系统项目介绍】 【4-Linux云服务器上安装Docker】 【5-Docker安装部署MySQL和Redis服务】…

SpringBoot与mockito那点事

题目起的很像那么回事&#xff0c;但是这篇博客本身写的很简单。 我不想写说一堆概念&#xff0c;然后阐释各种概念是什么意思。我喜欢的是直接从例子出发。 package com.example.demo.controller;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; impo…

操作系统的奋斗(一)

第1章 计算机系统概述1.1操作系统的基本概念1.1.1操作系统的概念1.1.2操作系统的特征&#xff08;1&#xff09;并发&#xff08;2&#xff09;共享&#xff08;3&#xff09;虚拟&#xff08;4&#xff09;异步1.1.3操作系统的目标和功能1.2操作系统发展史&#xff08;1&#…

微信公众号开发:网页授权

一、背景介绍 微信公众号网页授权&#xff0c;目的就是获取用户相关信息&#xff0c;实现自己的业务逻辑&#xff0c;最终于会得到的信息如下表格&#xff0c;本文对应的任务获取到openid即可满足业务需求&#xff0c;本文内容包括环境、操作步骤及相关内容比较详细&#xff0…

3D可视化工厂是如何实现的?

3D可视化工厂是数字孪生的一种方式&#xff0c;是基于智慧工厂现实场景进行虚拟的可视化工厂。 在传统工作模式下&#xff0c;许多工厂仍然存在着数据孤岛、生产过程缺乏监控及工作效率低等问题。如何进行工厂数字化的集中管理&#xff0c;寻求全新的数据驱动型业务解决方案&am…