巴蜀1471 魔兽争霸

2023-11-07 21:39
文章标签 巴蜀 魔兽争霸 1471

本文主要是介绍巴蜀1471 魔兽争霸,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Description
  小x正在销魂地玩魔兽,他正控制着死亡骑士和n个食尸鬼(编号1~n)去打猎,死亡骑士有个魔法,叫做“死亡缠绕”,可以给食尸鬼补充HP,战斗过程中敌人会对食尸鬼实施攻击,食尸鬼的HP会减少,小x希望随时知道自己部队的情况,即HP值第k多的食尸鬼有多少HP,以便决定如何施放魔法
请同学们帮助他:)   小x向你发出3种信号:(下划线在输入数据中表现为空格)
  A_i_a表示敌军向第i个食尸鬼发出了攻击,并使第i个食尸鬼损失了a点
  HP,如果它的HP<=0,那么这个食尸鬼就死了(Undead也是要死的……)。 敌军不会攻击一个已死的食尸鬼。   C_i_a
表示死亡骑士向第i个食尸鬼放出了死亡缠绕,并使其增加了a点HP。 HP值没有上限。死亡骑士不会向一个已死的食尸鬼发出死亡缠绕   Q_k
表示小x向你发出询问 Input   第一行,一个正整数 n ,以后n个整数 表示n个食尸鬼的初始HP值,接着一个正整数m ,以下m行
每行一个小x发出的信号 Output
  对于小x的每个询问,输出HP第k多的食尸鬼有多少HP,如果食尸鬼总数,不足k个,输出-1。每个一行数。
最后一行输出一个数:战斗结束后剩余的食尸鬼数

平衡树模板题。唯一多出来的是修改。
没有特别好的方法,删除之后再插入。
直接用数组下标表示编号比较好写。

#include<cstdio>
#include<cstring>
struct node
{int f,c[2],x,s;
}t[31000];
int r;
void up(int p)
{t[p].s=t[t[p].c[0]].s+t[t[p].c[1]].s+1;
}
void rot(int p,bool b)
{int x=t[p].f;int y=t[p].c[b];int z=t[y].c[!b];if (x) t[x].c[t[x].c[1]==p]=y;t[p].f=y;t[y].c[!b]=p;t[p].c[b]=z;if (z) t[z].f=p;t[y].f=x;up(p);up(y);
}
void splay(int p)
{int x,y,z;while (t[p].f){x=t[p].f;if (!t[x].f){rot(x,t[x].c[1]==p);break;}y=t[x].f;if ((t[y].c[0]==x)^(t[x].c[0]==p)){rot(x,t[x].c[1]==p);rot(y,t[y].c[1]==p);}else{rot(y,t[y].c[1]==x);rot(x,t[x].c[1]==p);}}r=p;
}
void ins(int id)
{int p=r,f,y,z;bool b;if (!p){r=id;t[r].s=1;t[r].f=0;t[r].c[0]=t[r].c[1]=0;return;}while (p){if (t[id].x<t[p].x)f=p,p=t[p].c[0],b=0;else f=p,p=t[p].c[1],b=1;}t[id].f=f;t[f].c[b]=id;t[id].s=1;t[id].c[0]=t[id].c[1]=0;while (f) up(f),f=t[f].f;splay(id);
}
void del(int p)
{splay(p);if (t[p].c[0]*t[p].c[1]==0){r=t[p].c[0]+t[p].c[1];t[t[p].c[0]].f=t[t[p].c[1]].f=0;return;}int x=t[p].c[0],y=t[p].c[1];t[x].f=0;while (t[x].c[1]) x=t[x].c[1];splay(x);t[x].c[1]=y;t[y].f=x;up(x);
}
void mod(int id,int x)
{t[id].x+=x;del(id);if (t[id].x>0) ins(id);
}
int que(int k)
{int p=r;if (t[p].s<k) return -1;while (1){if (k<=t[t[p].c[1]].s) p=t[p].c[1];else{if (k==t[t[p].c[1]].s+1){splay(p);return t[p].x;}else k-=(t[t[p].c[1]].s+1),p=t[p].c[0];}}
}
int main()
{int i,j,k,m,n,x,y,z;char c[5];scanf("%d",&n);for (i=1;i<=n;i++){scanf("%d",&t[i].x);ins(i);}scanf("%d",&m);for (i=1;i<=m;i++){scanf("%s",c+1);if (c[1]=='A')scanf("%d%d",&x,&y),mod(x,-y);if (c[1]=='C')scanf("%d%d",&x,&y),mod(x,y);if (c[1]=='Q')scanf("%d",&x),printf("%d\n",que(x));}printf("%d\n",t[r].s);
}

这篇关于巴蜀1471 魔兽争霸的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/366421

相关文章

寒假第五天--递推递归--三国佚事——巴蜀之危

三国佚事——巴蜀之危 Time Limit: 1000MS Memory limit: 65536K 题目描述 话说天下大势,分久必合,合久必分。。。却道那魏蜀吴三国鼎力之时,多少英雄豪杰以热血谱写那千古之绝唱。古人诚不我欺,确是应了那句“一将功成万骨枯”。  是夜,明月高悬。诸葛丞相轻摇羽扇,一脸愁苦。原来是日前蜀国战事吃紧,丞相彻夜未眠,奋笔急书,于每个烽火台写下安排书

三国佚事——巴蜀之危 (sdut oj)

三国佚事——巴蜀之危 Time Limit: 1000MS  Memory Limit: 65536KB Problem Description 话说天下大势,分久必合,合久必分。。。却道那魏蜀吴三国鼎力之时,多少英雄豪杰以热血谱写那千古之绝唱。古人诚不我欺,确是应了那句“一将功成万骨枯”。  是夜,明月高悬。诸葛丞相轻摇羽扇,一脸愁苦。原来是日前蜀国战事吃紧,

魔兽争霸3冰封王座 中文版

《魔兽争霸3:冰封王座》是一款由暴雪娱乐开发的即时战略游戏,是《魔兽争霸》系列第三部作品。游戏以其经典的故事情节、丰富的游戏元素和深入的战略玩法而著名。 在游戏中,玩家可以选择不同的种族,如人类、兽人、暗夜精灵等,每个种族都有其独特的单位、建筑和技能。玩家需要建立自己的基地,训练军队,并利用不同的战术和战略来对抗敌人。游戏的地图设计非常丰富,包括平原、山地、森林等各种地形,对玩家的战略部署提出了

【解决方案】Windows7 下面玩不了魔兽争霸3

今天遇到了一个问题,win7下运行 魔兽3,每次弹窗一闪而过,然后就没有了。 网上查了半天,突然有了灵感,轻松解决。 解决方法: 右键->以管理员身份运行

魔兽争霸跨网段对战原理与实现

1.魔兽争霸III冰封王座局域网联网过程 为了描述方便,先定义几个术语: 服务器:建立了游戏的主机 客户机:准备加入游戏的主机 分两种情况描述: 1.1客户机点击局域网时,服务器已经建立好了游戏 魔兽争霸启动后,当玩家点击“局域网”按钮时,会主动发送一次广播UDP包,内容如下:   F7 2F 10 00 50 58 33 57 14 00 00 00 00 00 00 00(客户

巴蜀1322 第k小的数

Description   现在已有N个整数,你有以下三种操作: 1 A:表示加入一个值为A的整数; 2 B:表示删除其中值为B的整数; 3 K:表示输出这些整数中第K小的数; Input 第一行,两个整数N,M,表示最开始有N个整数,总共有M个操作 第二行用空格隔开的N个整数 接下来M行,每行表示一个操作 Output 若干行,一行一个整数,表示所求

巴蜀1738 曹冲养猪

Description   自从曹冲搞定了大象以后,曹操就开始捉摸让儿子干些事业,于是派他到中原养猪场养猪,可是曹冲满不高兴,于是在工作中马马虎虎,有一次曹操想知道母猪的数量,于是曹冲想狠狠耍曹操一把。举个例子,假如有16头母猪,如果建了3个猪圈,剩下1头猪就没有地方安家了。如果建造了5个猪圈,但是仍然有1头猪没有地方去,然后如果建造了7个猪圈,还有2头没有地方去。你作为曹总的私人秘书理所当然

【SCOI2003】巴蜀1088 Antiprime数

Description   如果一个自然数n(n>=1),满足所有小于n的自然数(>=1)的约数个数都小于n的约数个数,则n是一个Antiprime数。譬如:1, 2, 4, 6, 12, 24。   任务:编一个程序:     1、从ANT.IN中读入自然数n。     2、计算不大于n的最大Antiprime数。     3、将结果输出到ANT.OUT中。 Input   输入只有

H - 三国佚事——巴蜀之危

Description 话说天下大势,分久必合,合久必分。。。却道那魏蜀吴三国鼎力之时,多少英雄豪杰以热血谱写那千古之绝唱。古人诚不我欺,确是应了那句“一将功成万骨枯”。   是夜,明月高悬。诸葛丞相轻摇羽扇,一脸愁苦。原来是日前蜀国战事吃紧,丞相彻夜未眠,奋笔急书,于每个烽火台写下安排书信。可想,这战事多变,丞相运筹 帷幄,给诸多烽火台定下不同计策,却也实属不易。  谁成想这送信小厮竟投

中国独角兽商机大会在成都举行,易保全携手企业家谱写区块链巴蜀新篇章

5月11日-13日,易保全参加第380届中国独角兽商机共享大会,并开启成都区域线下首发,区块链应用强势出圈。易保全作为重庆本土区块链企业,为企业家带来优质项目的同时,也将积极助力成渝地区双城经济圈建设。   唱响成渝双城计,打造区块链经济圈   2020年10月,中央审议了《成渝地区双城经济圈建设规划纲要》,明确将“成渝地区双城经济圈建设”作为国家战略,成渝两地再次迎来历史机遇。区块链