c语言炉石传说算法设计,FZU Problem 2232 炉石传说(匈牙利算法)
Problem Description
GG学长虽然并不打炉石传说,但是由于题面需要他便学会了打炉石传说。但是传统的炉石传说对于刚入门的GG学长来说有点复杂,所以他决定自己开发一个简化版的炉石传说。
在简化版的炉石传说中:
每个随从只有生命值和攻击力,并且在你的回合下,你的每只随从在本回合下只能选择一个敌方随从进行攻击。当两个随从a,b交战时,a的生命值将减去b的攻击力,b的生命值将减去a的攻击力,(两个伤害没有先后顺序,同时结算)。如果a或b的生命值不大于0,该随从将死亡。
某一次对局中,GG学长和对手场面上均有n个随从,并且是GG学长的回合。由于GG学长是个固执的boy,他一定要在本回合杀死对方所有随从,并且保证自己的随从全部存活。他想知道能否做到。
Input
第一行为T,表示有T组数据。T<=100。
每组数据第一行为n,表示随从数量(1 <= n <= 100)
接下来一行2 * n个数字a1, b1, a2, b2, ... , an, bn (1 <= ai, bi <= 100)
表示GG学长的n个随从,ai表示随从生命,bi表示随从攻击力
接下来一行2 * n个数字c1, d1, c2, d2, ... , cn, dn (1 <= ci, di <= 100)
表示对手的n个随从,ci表示随从生命,di表示随从攻击力。
Output
每组数据,根据GG是否能完成他的目标,输出一行”Yes”或”No”。
Sample Input
234 4 5 5 6 61 1 2 2 3 334 4 5 5 6 61 4 2 4 3 4
Sample Output
YesNo
Source
福州大学第十三届程序设计竞赛
思路:这个二分图是挺明显的,这面GG有n个soldier,敌人也有n个,我们只需要找到GG的soldier kill了敌人而不死的匹配。
可以用G[i][j]表示GG的第i个soldier和第j个敌人PK的的情况,如果GG的人赢了,就是true,else false。
然后匈牙利算法找最大匹配,如果是完美匹配,就Yes
/*
Problem 2232 炉石传说
思路:这个二分图是挺明显的,这面GG有n个soldier,敌人也有n个,
我们只需要找到GG的soldier kill了敌人而不死的匹配,
可以用G[i][j]表示GG的第i个soldier和第j个敌人PK的的情况,
如果GG的人赢了,就是true,else false。
然后匈牙利算法找最大匹配,如果是完美匹配,就Yes
*/
#include
#include
#include
#include
using namespace std;
const int N = 105;
struct soldier
{
int HP;//生命
int ATK;//攻击
}a[N],b[N];
bool G[N][N];
int girl[N],used[N],n;
bool dfs(int x)
{
for(int i = 1;i <= n;i++)
{
if(G[x][i] && !used[i])
{
used[i] = 1;
if(!girl[i] || dfs(girl[i]))
{
girl[i] = x;
return true;
}
}
}
return false;
}
int main()
{
int t;
cin >> t;
while(t--)
{
memset(girl,0,sizeof(girl));
memset(G,false,sizeof(G));
scanf("%d",&n);
for(int i = 1;i <= n;i++)
scanf("%d %d",&a[i].HP, &a[i].ATK);
for(int i = 1;i <= n;i++)
scanf("%d %d",&b[i].HP, &b[i].ATK);
for(int i = 1;i <= n;i++)
{
for(int j = 1;j <= n;j++)
{
int aHP = a[i].HP - b[j].ATK;//a的剩余生命
int bHP = b[j].HP - a[i].ATK;//b的剩余生命
if(aHP > 0 && bHP <= 0)
G[i][j] = true;
}
}
int ans = 0;
for(int i = 1;i <= n;i++)
{
memset(used,0,sizeof(used));
if(dfs(i))
ans++;
}
if(ans == n)
printf("Yes\n");
else
printf("No\n");
}
return 0;
}
c语言炉石传说算法设计,FZU Problem 2232 炉石传说(匈牙利算法)相关推荐
- 计算机导论算法设计,计算机导论精品PPT-第五章 算法与程序设计.ppt
<计算机导论精品PPT-第五章 算法与程序设计.ppt>由会员分享,可在线阅读,更多相关<计算机导论精品PPT-第五章 算法与程序设计.ppt(52页珍藏版)>请在人人文库网上 ...
- 算法设计与分析第七章分支限界算法(完结篇)
算法设计与分析第七章分支限界算法 一.分支界限算法概述 1.分支限界法类似于回溯法,是一种在问题的解空间树上搜索问题解的算法. 分支限界法的求解目标则是找出满足约束条件的一个解,或是在满足约束条件的解 ...
- 算法设计与分析第一章递推算法
算法设计与分析 第一章 递推算法 1.概述 在**已知条件**和**所求问题**之间总存在着某种相互联系的关系,如果可以找到前后过程之间的数量关系(即递推式),那么,从**问题出发逐步推到已知条件** ...
- 算法设计与分析——十大经典排序算法二(6--10)
一个不知名大学生,江湖人称菜狗 original author: jacky Li Email : 3435673055@qq.com Time of completion:2023.3.1 Las ...
- 算法设计和数据结构学习_2(常见排序算法思想)
一般约定我们是按照从小到大的顺序排序. 按照向量的形式来参考排序中数组元素的相对位置,行向量中最左边为数组的第一个元素,且称为前面.列向量中最上面的元素为数组的第一个元素,也是称为前边. 对常见的排序 ...
- 算法设计与分析_[04] 天牛须算法设计思想分析
原文链接: https://arxiv.org/abs/1710.10724arxiv.org 算法实现: 首先,初始化参数 ,分别代表初始解,初始的搜索范围,以及更新步长,且通过原文我们知道: 在 ...
- 软考-算法设计概述及常见的几种算法形式
递归法 一个过程或函数在其定义或说明中又直接或间接调用自身的一种方法,它通常把一个大型复杂的问题转化为一 个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复 ...
- 算法设计与分析第3章 贪心算法
第4章 贪心算法 贪心算法总是作出在当前看来最好的选择.也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择. 贪心算法的基本要素 1.贪心选择性质 所谓贪心选择性质是指所 ...
- 【算法基础】二分图(染色法 匈牙利算法)
一.二分图 1. 染色法 一个图是二分图,当且仅当,图中不含奇数环.在判别一个图是否为二分图⑩,其实相当于染色问题,每条边的两个点必须是不同的颜色,一共有两种颜色,如果染色过程中出现矛盾,则说明不是二 ...
最新文章
- 解读:为何在今年的淘宝造物节上!AR直播火到如此程度?
- iOS 15.2计划上线“数字遗产”!网友:管的真远,身后事都替我操心?
- linux系统分配文件夹内存,详解Linux系统内存知识及调优方案
- 当Swin Transformer遇上DCN,清华可变形注意力Transformer模型优于多数ViT
- mac 使用 php artisan,在Mac php artisan上設置Laravel遷移錯誤:沒有這樣的文件或目錄[duplicate]...
- mysql添加约束之前不满足_MySQL:添加约束(如果不存在)
- python中保留两位小数的编写程序_P081 保留两位小数
- android.mk 编译jar包,Androidmk 使用详解
- Asp.net上传文件至目录
- Java Collection框架入门
- ACM PKU 1251 Jungle Roads http://poj.org/problem?id=1251
- 配置VS2008来Debug .Net框架源码
- Ionic 开发环境搭建
- 【word论文排版教程0】论文制作流程
- 浏览器发送POST请求、DELETE请求
- 前端开发 html第三课 列表 超链接 相对路径 图片
- 警惕“不续签劳动合同”式裁员
- playm3u8插件 android,Playm3u8插件下载|Playm3u8插件 免费版_最火软件站
- 在VirtualBox上安装deepin
- 菲尔人格测试(测试一下自己的分数看看)
热门文章
- 【递归】java递归算法及替代方法
- HTML5+规范API-拍照功能
- 计算机网络(基带和带通调制与编码方法、波特率和比特率、奈氏准则和香农公式、信道复用技术 [ FDM、TDM、STDM、WDM、CDMA ] )
- Anaconda和pip换源(Windows版)
- STM32/AMP32F407进入低功耗待机模式后立马被唤醒的解决办法
- Unity 实现 (刮刮卡/刮刮乐) 效果
- 【电脑使用】如何设置没有自启项的软件开机启动
- 众多蔬菜 水果cc0高清摄影图片素材一键即可获取
- oracle数据库sp2 0667,SP2-0667/SP2-0750错误
- 粒子群综合能源系统优化的matlab实现,储能电池也考虑在内。 目标函数为燃气成本+购电成本+碳排放费用之和,注释非常详细