模拟。

注意随从的编号在\(summon\)和\(attack\)随从死亡时都可能改变。

#include <bits/stdc++.h>

using namespace std;

struct tNode
{
int attack;
int health;
}; tNode aPlayer[8];
tNode bPlayer[8];
int aM = 0, bM = 0; int aHealth = 30, bHealth = 30; int main()
{
int n;
scanf("%d", &n); int player = 1;
char op[30];
while (n--)
{
scanf("%s", op);
if (op[0] == 's')
{
int pos, attack, health;
scanf("%d%d%d", &pos, &attack, &health);
if (player == 1)
{
for (int i = aM + 1; i >= pos + 1; i--)
aPlayer[i] = aPlayer[i - 1];
aPlayer[pos].attack = attack;
aPlayer[pos].health = health;
aM++;
}
else
{
for (int i = bM + 1; i >= pos + 1; i--)
bPlayer[i] = bPlayer[i - 1];
bPlayer[pos].attack = attack;
bPlayer[pos].health = health;
bM++;
}
}
else if (op[0] == 'a')
{
int attacker, defender;
scanf("%d%d", &attacker, &defender);
if (player == 1)
{
if (defender == 0)
{
bHealth -= aPlayer[attacker].attack;
}
else
{
aPlayer[attacker].health -= bPlayer[defender].attack;
bPlayer[defender].health -= aPlayer[attacker].attack;
if (aPlayer[attacker].health <= 0)
{
for (int i = attacker; i <= aM - 1; i++)
aPlayer[i] = aPlayer[i + 1];
aM--;
}
if (bPlayer[defender].health <= 0)
{
for (int i = defender; i <= bM - 1; i++)
bPlayer[i] = bPlayer[i + 1];
bM--;
}
}
}
else
{
if (defender == 0)
{
aHealth -= bPlayer[attacker].attack;
}
else
{
aPlayer[defender].health -= bPlayer[attacker].attack;
bPlayer[attacker].health -= aPlayer[defender].attack;
if (aPlayer[defender].health <= 0)
{
for (int i = defender; i <= aM - 1; i++)
aPlayer[i] = aPlayer[i + 1];
aM--;
}
if (bPlayer[attacker].health <= 0)
{
for (int i = attacker; i <= bM - 1; i++)
bPlayer[i] = bPlayer[i + 1];
bM--;
}
}
}
}
else
{
player *= -1;
}
} if (aHealth <= 0 || bHealth <= 0)
printf("%d\n", player);
else
printf("0\n"); printf("%d\n", aHealth);
printf("%d", aM);
for (int i = 1; i <= aM; i++)
printf(" %d", aPlayer[i].health);
printf("\n"); printf("%d\n", bHealth);
printf("%d", bM);
for (int i = 1; i <= bM; i++)
printf(" %d", bPlayer[i].health);
printf("\n"); return 0;
}

CCF-CSP题解 201609-3 炉石传说的更多相关文章

  1. CCF CSP 201609-3 炉石传说

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201609-3 炉石传说 问题描述 <炉石传说:魔兽英雄传>(Hearthston ...

  2. CCF 炉石传说(模拟)

    试题编号: 201612-3 试题名称: 炉石传说 时间限制: 1.0s 内存限制: 256.0MB 问题描述 <炉石传说:魔兽英雄传>(Hearthstone: Heroes of Wa ...

  3. 炉石传说__multiset

     炉石传说  Problem Description GG学长虽然并不打炉石传说,但是由于题面需要他便学会了打炉石传说.但是传统的炉石传说对于刚入门的GG学长来说有点复杂,所以他决定自己开发一个简化版 ...

  4. CCF CSP 201703-3 Markdown

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201703-3 Markdown 问题描述 Markdown 是一种很流行的轻量级标记语言(l ...

  5. CCF CSP 201312-3 最大的矩形

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201312-3 最大的矩形 问题描述 在横轴上放了n个相邻的矩形,每个矩形的宽度是1,而第i( ...

  6. CCF CSP 201403-3 命令行选项

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201403-3 命令行选项 问题描述 请你写一个命令行分析程序,用以分析给定的命令行里包含哪些 ...

  7. CCF CSP 201709-4 通信网络

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201709-4 通信网络 问题描述 某国的军队由N个部门组成,为了提高安全性,部门之间建立了M ...

  8. CCF CSP 201409-3 字符串匹配

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201409-3 字符串匹配 问题描述 给出一个字符串和多行文字,在这些文字中找到字符串出现的那 ...

  9. CCF CSP 201503-3 节日

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201503-3 节日 问题描述 有一类节日的日期并不是固定的,而是以“a月的第b个星期c”的形 ...

  10. CCF CSP 201509-2 日期计算

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201509-2 日期计算 问题描述 给定一个年份y和一个整数d,问这一年的第d天是几月几日? ...

随机推荐

  1. 优秀的github项目学习

    优秀的github项目学习 后期会陆续添加遇到的优秀项目 https://github.com/chaijunkun

  2. Nginx服务器安装及配置解释

    nginx是高性能的轻量级web服务器. 特性: 1.http代理 2.反向代理 3.负载均衡 4.缓存机制 一,安装及启动(centos7,nginx 1.14.0) 1.下载 wget http: ...

  3. 带你涨姿势的认识一下 Kafka 消费者

    之前我们介绍过了 Kafka 整体架构,Kafka 生产者,Kafka 生产的消息最终流向哪里呢?当然是需要消费了,要不只产生一系列数据没有任何作用啊,如果把 Kafka 比作餐厅的话,那么生产者就是 ...

  4. react antd Table动态合并单元格

    示例数据 原始数组 const data = [ { key: '0', name: 'John Brown', age:22, address: 'New York No. 1 Lake Park' ...

  5. dom4j的测试例子和源码详解(重点对比和DOM、SAX的区别)

    目录 简介 DOM.SAX.JAXP和DOM4J xerces解释器 SAX DOM JAXP DOM解析器 获取SAX解析器 DOM4j 项目环境 工程环境 创建项目 引入依赖 使用例子--生成xm ...

  6. 【集训Day3 离散化】矩形覆盖

    矩形覆盖(planting) [问题描述] 给定在一个平面坐标系上的N(1 <= N <= 100)个矩形区域,这N个矩形可能有相互覆盖的部分.求平面上被所有矩形覆盖的总面积,重复部分只算 ...

  7. xpath选择兄弟节点、返回上一级和选择多个属性

    本文链接:https://blog.csdn.net/ZincZhang/article/details/80248297选择兄弟节点选择前N位的div标签 preceding-sibling::di ...

  8. scikit-learn文本特征提取之TF-IDF

    TF-IDF(term frequency–inverse document frequency)是一种用于资讯检索与文本挖掘的常用加权技术. TF-IDF是一种统计方法,用以评估一字词对于一个文件集 ...

  9. 二叉查找树的平衡(DSW算法)

    树适合于表示某些领域的层次结构(比如Linux的文件目录结构),使用树进行查找比使用链表快的多,理想情况下树的查找复杂度O(log(N)),而链表为O(N),但理想情况指的是什么情况呢?一般指树是完全 ...

  10. 如何平滑优雅地在Rancher 2.x中升级cert-manager?

    作者: Nassos Michas丨European Dynamics SA, CTO 如果你正在使用由Rancher提供的Helm Chart在Rancher管理的Kubernetes集群中安装ce ...