稀奇稀奇真稀奇,动物园摆出了擂台赛。小动物们纷纷上台比试,谁能获得最后的冠军呢?
动物园长发现小动物们打擂只与自身的三项属性有关:血量,攻击力和防御力。此外,小动物在赛前都为自己准备了一系列的攻击计划,计划按回合制定,包含攻击和格挡两种动作。计划的回合数是有限的,如果在完成计划中所有动作后,重复执行已经定下的计划。某小动物的血量等于或小于0时,该小动物退场,打擂结束。如果双方同时退场,那么为平局,否则未退场的一方胜。
在某回合进行前,小动物A的当前血量为HPA,攻击力为ATA,防御力为DFA;小动物B的当前血量为HPB,攻击力为ATB,防御力为DFB。那么,这个回合结束时,可能出现如下4种情况:
1、回合中小动物A执行攻击动作,小动物B执行格挡动作。回合结束后,小动物A的血量为min{HPA-(ATA-DFB), HPA},小动物B的血量为HPB-1;
2、回合中小动物A执行格挡动作,小动物B执行攻击动作。回合结束后,小动物A的血量为HPA-1,小动物B的血量为min{HPB-(ATB-DFA), HPB};
3、回合中小动物A与B同时执行攻击动作。回合结束后,小动物A的血量为min{HPA-(ATB-DFA), HPA},小动物B的血量为min{HPB-(ATA-DFB), HPB};
4、回合中小动物A与B同时执行格挡动作。回合结束后,小动物A的血量为HPA,小动物B的血量为HPB。
 
如,小猴与小猫进行比赛,属性如下:
  小猴 小猫
血量 5 10
攻击力 5 3
防御力 5 3
 
 
小猴的攻击序列为:1、攻击,2、格挡,3、攻击,4、格挡
小猫的攻击序列为:1、攻击,2、攻击,3、格挡,4、格挡
 
那么该局擂台赛的情况如下:
 
  小猴的血量 小猫的血量
回合0(初始) 5 10
回合1 5 8
回合2 4 8
回合3 2 7
回合4 2 7
回合5 2 5
回合6 1 5
回合7(游戏结束) -1 4
 
 
此时,两个小动物跳上了擂台,他们谁能取得最后的胜利呢?

Input

输入包含4行。

第一行包含3个整数HPA,ATA和DFA,为小动物A的三项基本属性:血量,攻击力和防御力。
第二行为小动物A的攻击计划。首先为一个整数KA(KA<100),表示攻击计划包含KA个回合。接下来为KA个1或2,描述攻击计划中每一回合的动作,其中1表示攻击,2表示格挡。
第三行包含3个整数HPB,ATB和DFB,为小动物B的三项基本属性:血量,攻击力和防御力。
第四行为小动物B的攻击计划。首先为一个整数KB(KB<100),表示攻击计划包含KB个回合。接下来为KB个1或2,描述攻击计划中每一回合的动作,其中1表示攻击,2表示格挡。
 

Output

输出只有一行。

若为平局,则输出"tie";
若小动物A胜,则输出"A";
若小动物B胜,则输出"B";
我们保证,在1,000,000个回合内必定有小动物退场。
 

Sample Input

5 5 5
4 1 2 1 2
10 3 3
4 1 1 2 2
 

Sample Output

B
 
水题,直接模拟该过程即可
 
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std; int main()
{
int ahp,aatk,adef,bhp,batk,bdef;
int a[105],b[105],i,j,na,nb;
while(~scanf("%d%d%d",&ahp,&aatk,&adef))
{
scanf("%d",&na);
for(i = 0; i<na; i++)
scanf("%d",&a[i]);
scanf("%d%d%d",&bhp,&batk,&bdef);
scanf("%d",&nb);
for(i = 0; i<nb; i++)
scanf("%d",&b[i]);
i = j = 0;
while(ahp>0 && bhp>0)
{
if(a[i] == 1 && b[i] == 1)
{
ahp = min(ahp-(batk-adef),ahp);
bhp = min(bhp-(aatk-bdef),bhp);
}
else if(a[i] == 1 && b[i] == 2)
{
ahp = min(ahp-(aatk-bdef),ahp);
bhp--;
}
else if(b[i] == 1 && a[i] == 2)
{
bhp = min(bhp-(batk-adef),bhp);
ahp--;
}
i++;
j++;
i%=na;
j%=nb;
}
if(ahp<=0 && bhp<=0)
printf("tie");
else if(ahp<=0)
printf("B");
else
printf("A");
printf("\n");
} return 0;
}

BNU4204:动物PK的更多相关文章

  1. 设计模式之行为类模式大PK

                                        行为类模式大PK 行为类模式包括责任链模式.命令模式.解释器模式.迭代器模式.中介者模式.备忘录模式.观察者模式.状态模式.策略 ...

  2. 设计模式之结构类模式大PK

                                      结构类模式大PK 结构类模式包括适配器模式.桥梁模式.组合模式.装饰模式.门面模式.享元模式和代理模式.之所以称其为结构类模式,是因 ...

  3. 设计模式之创建类模式大PK

                                        创建类模式大PK 创建类模式包括工厂方法模式.建造者模式.抽象工厂模式.单例模式和原型模式,他们能够提供对象的创建和管理职责.其 ...

  4. MySQL Workbench建表时 PK NN UQ BIN UN ZF AI 的含义

    [转自网络]https://my.oschina.net/cers/blog/292191 PK Belongs to primary key 作为主键 NN Not Null 非空 UQ Uniqu ...

  5. F#之旅3 - F# PK C#:简单的求和

    原文链接:https://swlaschin.gitbooks.io/fsharpforfunandprofit/content/posts/fvsc-sum-of-squares.html Comp ...

  6. python之在线PK游戏(第六天)

      本节作业: 熟练使用类和模块,写一个交互性强.有冲突的程序. 故本次写了一个文字回合制的PK游戏,系统主程序为根目录下的:game_menu.py 1. 系统功能模块: 第六天的作业:文字游戏程序 ...

  7. 通过CSS实现小动物

    此例演示的是通过CSS实现动物头像,效果如下: 好了,上代码: html代码: <html> <head> <meta charset="utf-8" ...

  8. 类的继承和多态性-编写Java应用程序,定义Animal类,此类中有动物的属性:名称 name,腿的数量legs,统计动物的数量 count;方法:设置动物腿数量的方法 void setLegs(),获得腿数量的方法 getLegs(),设置动物名称的方法 setKind(),获得动物名称的方法 getKind(),获得动物数量的方法 getCount()。定义Fish类,是Animal类的子类,

    编写Java应用程序,定义Animal类,此类中有动物的属性:名称 name,腿的数量legs,统计动物的数量 count;方法:设置动物腿数量的方法 void setLegs(),获得腿数量的方法 ...

  9. 第29章 跨战区大PK

    29.1 策略模式 VS 桥梁模式 29.1.1 策略模式 [编程实验]用策略模式实现邮件发送 (1)有文本和超文本两种格式的邮件,将这两种格式封装成两种不同的发送策略. (2)文本邮件和超文本邮件分 ...

随机推荐

  1. C语言 · 学生信息(P1102)

    算法训练 P1102   时间限制:1.0s   内存限制:256.0MB      定义一个学生结构体类型student,包括4个字段,姓名.性别.年龄和成绩.然后在主函数中定义一个结构体数组(长度 ...

  2. 分别通过【buildpath】和【lib】倒入JAR包有什么不同

    我们可以通过java虚拟机的类加载器来理解.通过buildpath设置(或添加)程序使用jar包的classpath.Java虚拟机是根据Java ClassLoader(类加载器)决定如何,到那里去 ...

  3. ExtJs GridPanel 给表格行或者单元格自定义样式

    Ext.onReady(function(){ Ext.create('Ext.data.Store', { storeId:'simpsonsStore', fields:['name', 'ema ...

  4. C++中声明与定义的区别

    如果是指变量的声明和定义: 从编译原理上来说,声明是仅仅告诉编译器,有个某类型的变量会被使用,但是编译器并不会为它分配任何内存.而 定义就是分配了内存.对于下面的两句代码:void Func(){in ...

  5. Spark1.0.0 学习路线指导

    转自:http://www.aboutyun.com/thread-8421-1-1.html 问题导读1.什么是spark?2.spark编程模型是什么?3.spark运维需要具有什么知识?4.sp ...

  6. 关于Cocos Creator用js脚本代码播放骨骼动画的步骤和注意事项

    步骤: 1.用cc.find()方法找到相应的骨骼动画节点,并把这个对象赋值给一个var出来的新对象. 具体代码:var spineboy_anim = cc.find("UI_Root/a ...

  7. Maven学习日记(二)---MAVEN创建多模块的项目

    手动构建多模块maven项目,这个simple-parent项目下有两个子模块,一个是jar包型的simple-weather和一个war型的simple-webapp1.创建一个父的simple-p ...

  8. 基于jQuery的计算文本框字数的代码-jquery

    用户边输入计算同时进行,告诉用户还剩余多少可输入的字数,当超过规定的字数后,点击确定,会让输入框闪动 一.功能:  1.用户边输入计算同时进行,告诉用户还剩余多少可输入的字数;  2.当超过规定的字数 ...

  9. i2c驱动笔记

    基于bcm5300x芯片 注册平台总线设备,设备名bcm5300x_i2c,通过名称与驱动进行匹配. 注册平台总线驱动.驱动名称"bcm5300x_i2c",与设备进行匹配. dr ...

  10. Spring 4 官方文档学习(十一)Web MVC 框架之themes

    http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-themeresolver ...