来局昆特牌吗?(模拟+策略优化)
这题读起来比较长,需要仔细理解题意。
本题的条件是;给出了对手的所有出牌和己方的所有手牌,问采用最优策略,是否可以胜利?
有几个注意点:
1 天气状态可以叠加, 即又下雨又起雾同时起霜; 天气状态牌从出牌后就开始起作用了,一直会持续到牌局结束,所以不管普通牌是先于天气牌出还是后于天气牌出,只要天气牌一出,普通牌都会被影响;若对应的天气状态已经有了, 再出同样状态的天气牌并没有什么新作用;
2 若普通牌战力为0, 则此张牌没有意义,因为题目说法是,天气牌会让对应普通牌战力降低为1;这里若普通牌战力就为0,那也没法降低了,直接忽略掉这种牌(这里好像题目改了,一开始说的是战力取值为自然数,现在改成正整数了)
3 此题没有攻击与被攻击哦,不要因为看到近战,攻城这些字眼迷糊住了。只是需要计算各自手牌中的总战力谁高谁低即可。
解题思路如下:总战力值可以在输入的时候就先累加计算,对于普通牌,要记录对方普通牌和己方普通牌因为天气原因战力降低为1 而损失掉的战力; 对于已经出手的天气牌,天气状态已经生效且不可取消,所以,最优策略就是对于己方的所有天气手牌,若此种天气状态暂未生效,比较己方和对方谁会因为此种天气状态导致对应普通牌战力降低 的更多,己方降低的少则选择出手此天气牌, 反之不出手。最后比较总战力值。
#include <iostream>using namespace std;int main()
{// 对方牌输入参数int a[4]; int normal[4] = {0}; // 记录对方普通牌 因为天气影响战力变为1时 需要减少的生命值bool weather_state[4] = {0}; // 当前天气状态(雨雾霜可以叠加)int nlife_1 = 0; // 对方战力值int c, d, weather; // 输入用临时变量for (int i = 0; i < 4; i ++ ) scanf("%d", &a[i]);for (int i = 0; i < 3; i ++ ) // 输入对方所有打出的单位牌, 3个类别{for (int j = 0; j < a[i]; j ++ ){scanf("%d%d", &c, &d);nlife_1 += d; // 英雄牌不受天气影响直接累加生命值,普通牌则先累加生命值if (!c && d) normal[i + 1] += d - 1; // 记录普通牌因天气影响战力变为1减少的生命值}}for (int i = 0; i < a[3]; i ++ ) // 输入对方打出的天气牌{scanf("%d", &weather);weather_state[weather] = true;}// 我方输入参数int x1, x2;int nlife_2 = 0;int x, y, z;int my_normal[4] = {0}; // 记录我方普通牌 因为天气影响战力变为1时 需要减少的生命值scanf("%d%d", &x1, &x2);for (int i = 0; i < x1; i ++ ){scanf("%d%d%d", &x, &y, &z);nlife_2 += z;if (!y && z) my_normal[x] += z - 1 ;}for (int i = 0; i < x2; i ++ ) // 策略:对于己方的天气牌,若此天气牌的效果让对面生命值减少的比己方多, 则可以出;否则不出(前提是此天气状态暂时没有被对手置为真){scanf("%d", &weather);if (!weather_state[weather]){if (normal[weather] > my_normal[weather]) weather_state[weather] = true;}}for (int i = 1; i <= 3; i ++ ) // 因天气原因,大家的生命值要一起减{if (weather_state[i]){nlife_1 -= normal[i];nlife_2 -= my_normal[i];}}if (nlife_2 > nlife_1) printf("Y");else printf("N");return 0;
}
来局昆特牌吗?(模拟+策略优化)相关推荐
- ACM_题目这么难,来局愉快的昆特牌吧
题目这么难,来局愉快的昆特牌吧 Time Limit: 2000/1000ms (Java/Others) Problem Description: 小Z打比赛,然而比赛太难了,他坐在电脑面前被题淹没 ...
- jozj5945. 【NOIP2018模拟11.02】昆特牌
5945. [NOIP2018模拟11.02]昆特牌 Description 作为一个资深OIer,你被邀请到位于波兰的CDPR总部参观.但没想到你刚一到就遇到了麻烦.昆特牌的数据库发生了故障.原本昆 ...
- 【纪中模拟2018.11.02】【JZOJ5945】昆特牌
题目链接:https://jzoj.net/senior/#main/show/5945 Limits TL: 1e3ms ML:512Mb Description 原本昆特牌中有$k$种卡牌和$n$ ...
- JZOJ5945. 【NOIP2018模拟11.02】昆特牌(gwent)
Description 作为一个资深OIer,你被邀请到位于波兰的CDPR总部参观.但没想到你刚一到就遇到了麻烦.昆特牌的数据库发生了故障.原本昆特牌中有 k种卡牌和n 种阵营,为了平衡,每个阵营拥有 ...
- JZOJ-senior-5945. 【NOIP2018模拟11.02】昆特牌(gwent)
Time Limits: 1000 ms Memory Limits: 524288 KB Detailed Limits Description 作为一个资深OIer,你被邀请到位于波兰的CDPR总 ...
- tablewidget 行数自适应_控制|基于自适应遗传算法的增程式电动汽车能量管理策略优化...
点击上方蓝字关注我们! 摘要:建立增程式电动汽车整车仿真模型,以恒温器控制策略为例,以车辆最长续驶里程和百公里油耗为优化目标,利用自适应遗传算法对其能量管理策略进行了优化。优化结果表明,采用自适应遗传 ...
- Promodel®模拟和优化套装加速企业绩效改善 功能介绍
采用Promodel®模拟和优化套装加速企业绩效改善,消除风险! Promodel®仿真模拟和优化套装是业内先进的离散事件系统仿真软件,由ProModel公司于1996年开发.它可以构造多种生产.物流 ...
- ICLR 2022 | 绝艺学会打麻将,腾讯AI Lab提出全新策略优化算法ACH
感谢阅读腾讯AI Lab微信号第144篇文章.本文介绍「绝艺」在二人麻将游戏环境取得的进展,相关算法及benchmark已开源,论文被机器学习国际顶会 ICLR 2022 接收. 「绝艺」是腾讯AI ...
- 巫师之昆特牌手游服务器中断连接,巫师之昆特牌10月11日网络维护 掉线处理办法...
巫师之昆特牌10月11日网络维护 掉线处理办法 今早昆特牌网络很不稳定,6:00-9:00很多玩家掉线了,这是因为突然的网络维护,目前情况已好转,但如果你依旧掉线,请参照下面日志! 亲爱的玩家: 为了 ...
最新文章
- scrapy提取数据
- 2016.3.2(String 类)
- Python入门100题 | 第080题
- gis 路径拟合算法_决策树算法十问及经典面试问题
- 装饰器,闭包,高阶函数,嵌套函数
- android Wifi开发相关内容
- as安装过程中gradle_在安装钢结构平台过程中需要注意哪些事项?
- 安卓activity生存周期的onCreate、onRestoreInstanceState、onRestart、onStart、onResume、onPause、onStop、onDestroy
- android 动画基础,Android 动画基础
- openwrt udp服务器_开启tftp服务器 tftp服务器的含义
- 制造中心量产推进计划
- 你的账户配置为阻止使用计算机,Win10打开软件提示为了对电脑进行保护,已经阻止此应用解决方法...
- husky 7 + lint-staged 11+ prettier 2 + eslint 7 配置
- Nacos配置热更新两种方式。
- EasyTest 接口自动化测试平台 搭建手顺
- 求无限循环小数的循环节
- python随机森林变量重要性_推荐 :一文读懂随机森林的解释和实现(附python代码)...
- USACO Monthly Expense
- 多频外差法(三频四步相移)
- 一种改进的蚁狮优化算法 改进的ALO算法
热门文章
- 大神李沐被曝离职!投身大模型创业,GitHub项目已开
- 生活娱乐 装修最容易被忽视的十大装修细节
- python图片旋转成水平_python之批量使图片水平翻转
- 主板烧糊,大短路,不开机且烧糊成碳了还会导电
- 【软件定义汽车】【中间件】iceoryx冰羚
- 我的【藏羚头条】开发运营经验
- 微信网页扫码登录与微信公众号授权登录的区别
- 一寸Timing一寸金,寸金能买寸光阴——CCD
- 龙迅LT7911D Type-C/DP/eDP to MIPI DSI/CSI/LVDS 信号转换芯片
- 【那些年做过的设计 · 纪念贴】UI设计中移动端和PC端之间具体有什么区别