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 魔兽争霸相关推荐

  1. 题目 1471:【蓝桥杯】【入门题】【基础练习VIP】矩形面积交

    题目 1471:矩形面积交 蓝桥杯刷题群已成立,微信后台回复[蓝桥杯],即可进入. 如果加入了之前的社群不需要重复加入. 时间限制: 1Sec 内存限制: 128MB 1. 题目描述 平面上有两个矩形 ...

  2. 探寻《魔兽争霸3》中最不为人知的按键

    1.子组顺序修改键: 可能大家对这个键比较陌生,我先来为大家解释一下这个键的位置: (1)首先进入魔兽争霸游戏,然后按"选项" (2)然后按上方的"游戏性" ( ...

  3. luogu 1471

    题意: 蒟蒻HansBug在一本数学书里面发现了一个神奇的数列,包含N个实数.他想算算这个数列的平均数和方差. 操作1:1 x y k ,表示将第x到第y项每项加上k,k为一实数. 操作2:2 x y ...

  4. 地图上制作线路的动画_魔兽争霸重制版不只是表面上这么简单,新版编辑器制作地图更容易...

    对于许多玩家来说,魔兽争霸绝对是一款信仰级别的游戏,它曾经陪伴我们度过了许多难忘的美好时光,但是对于许多地图开发制作者来说,这个游戏更像是自己的信仰.魔兽一个游戏所衍生出的RPG地图,让许多玩家从中收 ...

  5. 魔兽争霸Ⅲ运行时不能初始化directX的错误解决

    运行魔兽争霸3不能初始化DirectX错误这样解决: 1:在运行中输入(win+r):dxdiag,查看显示栏,确定电脑已安装好directx 8.1以上,且下面的三个加速都已开启. 2:如果没有安装 ...

  6. 三国轶事——巴蜀之危

    三国佚事--巴蜀之危 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 话说天下大势,分久必合,合久必分...却道那魏蜀吴三国鼎力之 ...

  7. 不存在_施文忠 | ”存在“与“不存在”——巴蜀文明概论

           海德格尔有句名言:"存在者存在,不存在者不存在!" 四川,一个伟大的存在,偏偏存在于四川的口头禅却是"不存在". 在不存在中追求存在,在存在中摆脱 ...

  8. 魔兽争霸3地图(WarIII Maps):梦若流星

    魔兽争霸3地图(WarIII Maps):梦若流星 梦若流星 游戏类型:RPG 通关时间:30分钟 流星蝴蝶剑后传, 即使孟星魂想独善其身, 也未必就能如愿------ 为了更好的体验游戏,请在在&q ...

  9. 三国佚事——巴蜀之危【递推】

    三国佚事--巴蜀之危 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Description ...

  10. 魔兽争霸3地图(WarIII Maps):三国猛兽传

    魔兽争霸3地图(WarIII Maps):三国猛兽传 三国猛兽传 三国时期,连年战乱, 天降异象,所有战力无双的英雄,外表全都变成了凶悍的猛兽---- 其貌虽毁,其心不改 攻城略地,百战成钢 一统江山 ...

最新文章

  1. shell监控MySQL服务是否正常
  2. python中关于操作时间的方法(一):使用time模块
  3. 处女座与cf(思维题)
  4. Webpack单元测试,e2e测试
  5. JQuery中.css()与.addClass()设置样式的区别
  6. 10 -3 2用c语言怎么打,(3*20+30-10)/2怎么使用C语言编写
  7. C# 面向对象程序设计复习
  8. asp.net html 扩展,StaticHtml
  9. Docker批量拉取和推送的Linux Shell脚本
  10. 应急响应入侵排查之第二篇Linux
  11. sql2012下载,安装,
  12. 直方图均衡化的原理及实现
  13. 电脑系统重装出现蓝屏解决方法
  14. 树莓派笔记12:通过SPI操作OLED显示屏
  15. 小新air14 2020 i5-1035G1完美黑苹果
  16. 淘宝授权登录对接文档
  17. 什么是物联网网关及其主要特点
  18. stata软件不出图_绘制回归分析结果的森林图,R和Stata软件学起来!
  19. powerbi如何创建参数_Power BI中参数的用法
  20. 中国大学 科研水平 最新排行榜(ESI)

热门文章

  1. Vue使用axios图片上传报错500
  2. 与前端设计师谈响应式设计
  3. 软件测试-黑盒测试:正交实验设计法
  4. ANC降噪耳机声学参数合成与校准的2种方式
  5. 服务器宝塔是什么意思?
  6. 手把手教学endnote设置毕业论文参考文献格式(特别完整)
  7. MySQL gtid purge_MySQL中set gtid_purged的行为变更及对备份恢复的影响
  8. 在Windows环境下,将tomcat的默认端口修改为8081
  9. 沟通成本:信任,外包永远的痛——外包实践(65)
  10. 循环矩阵求特征值的方法