题目

  小X为了展示自己高超的游戏技巧,在某一天兴致勃勃地找小Y玩起了一种卡牌游戏。每张卡牌有类型(攻击或防御)和力量值两个信息。小Y有n张卡牌,小X有m张卡牌。已知小X的卡牌全是攻击型的。
  游戏的每一轮都由小X 进行操作,首先从自己手上选择一张没有使用过的卡牌X。如果小Y手上没有卡牌,受到的伤害为X的力量值,否则小X要从小Y的手上选择一张卡牌Y。若Y是攻击型(当X的力量值不小于Y的力量值时才可选择),此轮结束后Y 消失,小Y受到的伤害为X的力量值与Y 的力量值的差;若Y是防御型(当X的力量值大于Y的力量值时才可选择),此轮结束后Y消失,小Y不受到伤害。
  小X可以随时结束自己的操作(卡牌不一定要用完)。希望聪明的你帮助他进行操作,使得小Y受到的总伤害最大。
  PS:原题:CF321B Ciel and Duel

输入

输入的第一行包含两个整数n和m。
接下来n 行每行包含一个字符串和一个整数,分别表示小Y的一张卡牌的类型(“ATK”表示攻击型,“DEF”表示防御型)和力量值。
接下来m 行每行包含一个整数,表示小X的一张卡牌的力量值。

输出

输出一行包含一个整数,表示小Y受到的最大总伤害。

样例

输入 输出
2 3
ATK 2000
DEF 1700
2500
2500
2500
3000
3 4
ATK 10
ATK 100
ATK 1000
1
11
101
1001
992

数据规模

各规模均有一半数据满足小Y 只有攻击型卡牌。
对于30%的数据,1≤n,m≤6。
对于60%的数据,1≤n,m≤\(10^3\)。
对于100%的数据,1≤n,m≤\(10^5\),力量值均为不超过\(10^6\)的非负整数。

题解

考虑两种策略:
1.不动对方的防御牌,直接用我方最大的牌攻击对方最小的攻击牌,直到打不动为止。
2.用大小最相近的牌将对方所有的牌消耗光,再用余下的牌造成满伤害。
我们很难以决策这两种策略哪一种更优,怎么办办?
——很简单,两种策略都使用一遍,取答案更优的。

#include<bits/stdc++.h>
using namespace std;
typedef unsigned long long ull;
const int MAXN=100010;
int n,m,cntatk,cntdef;
int a[MAXN],atk[MAXN],def[MAXN];
bool book[MAXN]={false};
ull ans1=0,ans2=0;void solve1(){for(int i=1,j=m;a[j]>atk[i] && j>0 && i<=cntatk;i++,j--) ans1+=a[j]-atk[i];
}void solve2(){for(int i=1,j=1;i<=cntdef;i++){while((a[j]<=def[i] || book[j]) && j<=m) j++;if(j==m+1){ans2=0;//如果连对方的防御牌都打不完,这种策略的得分为0return;}book[j]=true;}for(int i=1,j=1;i<=cntatk;i++){while((a[j]<atk[i] || book[j]) && j<=m) j++;if(j==m+1) return;//如果打不完对方攻击牌,直接退出 ans2+=a[j]-atk[i];book[j]=true;}for(int i=1;i<=m;i++){if(!book[i]) ans2+=a[i];}
}int main(){scanf("%d %d",&n,&m);char ch[5];int t;for(int i=1;i<=n;++i){scanf("%s %d",ch,&t);if(ch[0]=='A') atk[++cntatk]=t;else def[++cntdef]=t;}for(int i=1;i<=m;i++) scanf("%d",&a[i]);sort(atk+1,atk+cntatk+1);sort(def+1,def+cntdef+1);sort(a+1,a+m+1);solve1();solve2();printf("%lld",max(ans1,ans2));return 0;
}

转载于:https://www.cnblogs.com/znk161223/p/11516672.html

Day4 T2 卡牌游戏相关推荐

  1. 【概率DP】$P2059$ 卡牌游戏

    [概率DP]P2059 卡牌游戏 链接 题目描述 N个人坐成一圈玩游戏.一开始我们把所有玩家按顺时针从1到N编号.首先第一回合是玩家1作为庄家.每个回合庄家都会随机(即按相等的概率)从卡牌堆里选择一张 ...

  2. 天池 在线编程 卡牌游戏(01背包)

    文章目录 1. 题目 2. 解题 1. 题目 你跟你的朋友在玩一个卡牌游戏,总共有 n 张牌. 每张牌的成本为 cost[i] 并且可以对对手造成 damage[i] 的伤害. 你总共有 totalM ...

  3. 动漫品牌“爆笑虫子”宣布与xNFT Protocol战略合作,开发NFT数字卡牌游戏

    2021年4月23日,xNFT Protocol与动漫品牌"爆笑虫子"进行战略合作,推动"爆笑虫子"在卡牌游戏领域进行数字化转型.IP的数字(NFT)化是xNF ...

  4. CCF201612-5 卡牌游戏(募集解题代码)

    试题编号: 201612-5 试题名称: 卡牌游戏 时间限制: 3.0s 内存限制: 256.0MB 问题描述: 问题描述 小Q和小M是游戏数值策划师,他们最近在测试自己新设计的卡牌对战游戏.游戏总共 ...

  5. 算法题 - 卡牌游戏问题 - Python

    问题描述: 卡牌游戏问题   小a和小b玩一个游戏,有 n张卡牌,每张上面有两个正整数 x, y.取一张牌时,个人积分增加 x,团队积分增加 y.求小a,小b各取若干张牌,使得他们的 个人积分相等,且 ...

  6. java卡牌游戏详解

    代码如下: package zxc;//文件夹名称 import java.awt.*; import java.awt.event.ActionEvent; import java.awt.even ...

  7. 基于QT开发的开源局域网联机UNO卡牌游戏报告(附github仓库地址)

    源代码: https://github.com/yunwei37/UNO-game-oop 目录 1. 需求分析 1.1. UNO卡牌游戏的基本功能 1.2. UNO卡牌游戏的规则 2. 总体设计 3 ...

  8. 卡牌游戏战斗系统的设计和实现二

    卡牌游戏战斗系统的设计和实现二 http://www.lxway.com/4418844614.htm 在一篇文章中,我更多的是从游戏理论的角度,讨论了战斗的系统的设计.这篇文章中,我将从程序的角度, ...

  9. 盛大搅局手游市场:引入日系卡牌游戏_0

    腾讯科技讯(娄池)7月18日消息,盛大游戏宣布热门手游<百万亚瑟王>于今日开启国服公测,这款由日本知名游戏公司Square Enix(SE)研发,盛大游戏韩国子公司Actoz Soft负责 ...

最新文章

  1. android调用h5预加载图片,使用HTML5的页面资源预加载(Link prefetch)功能加速你的页面加载速度...
  2. 神策学堂“训练营+特训营”,种子学员招募中,来一起出圈呀!
  3. 3DSlicer6:编译、调试、规范化的开发
  4. HAL驱动库学习-ADC
  5. sqlalchemy外键和relationship查询
  6. WebFlux响应式编程基础之 4 reactive stream 响应式流
  7. android sudio提示快捷键冲突解决
  8. 共享主机与虚拟机文件方式一
  9. OSPF特殊区域之stub和totally stub配置(二)
  10. 手机上有没有学python的软件-盘点几个在手机上可以用来学习编程的软件
  11. [ZZ]HOW TO:使用 Visual Studio .NET 将 SQL Server 2000 存储过程添加到 Visual SourceSafe
  12. 关于内存地址和内存空间的理解。
  13. 前端----JavaScript
  14. excel处置4000行数据卡_Python自动获取当日所有股票数据
  15. java的JDBC简单案例
  16. 菜鸟学Linux 第041篇笔记 常见系统故障排除
  17. [闲聊篇]这个世界所谓的28定律
  18. 如何解决Win10应用商店代码:0x80131500错误
  19. 2022-2028全球铝制3D打印机行业调研及趋势分析报告
  20. 工业平板手持PDA的功能有哪些?

热门文章

  1. html 360浏览器输入框自动填充,关于360浏览器自动填充表单问题以及解决方案
  2. AD22如何添加一个元件的元件库(添加封装)(footprint is mising 问题)
  3. h5页面,关闭手机键盘
  4. [Matlab]切比雪夫Ⅰ型滤波器设计:低通、高通、带通和带阻(2)
  5. java实现将文件导出格式设为txt,并下载到桌面
  6. windows10 缺失 msvcp140.dll 解决办法
  7. ExtJS基础知识总结:常用控件使用方式(一)
  8. Swoft View 视图
  9. frozen ui php,手机版开发框架集合 Frozen UI WeUI SUI Mobile
  10. 窄带波束形成——频域的波束形成