地址:http://acm.uestc.edu.cn/#/problem/show/1324

卿学姐与公主

Time Limit: 2000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others)
某日,百无聊赖的卿学姐打开了某11区的某魔幻游戏

在这个魔幻的游戏里,生活着一个美丽的公主,但现在公主被关押在了魔王的城堡中。

英勇的卿学姐拔出利刃冲向了拯救公主的道路。

走过了荒野,翻越了高山,跨过了大洋,卿学姐来到了魔王的第一道城关。

在这个城关面前的是魔王的精锐部队,这些士兵成一字排开。

卿学姐的武器每次只能攻击一个士兵,并造成一定伤害,卿学姐想知道某时刻从LL到RR这个区间内,从开始到现在累计受伤最严重的士兵受到的伤害。

最开始每个士兵的受到的伤害都是0

Input

第一行两个整数N,QN,Q表示总共有NN个士兵编号从11到NN,和QQ个操作。

接下来QQ行,每行三个整数,首先输入一个tt,如果tt是11,那么输入p,xp,x,表示卿学姐攻击了pp这个位置的士兵,并造成了xx的伤害。如果tt是22,那么输入L,RL,R,表示卿学姐想知道现在[L,R][L,R]闭区间内,受伤最严重的士兵受到的伤害。

1≤N≤1000001≤N≤100000

1≤Q≤1000001≤Q≤100000

1≤p≤N1≤p≤N

1≤x≤1000001≤x≤100000

1≤L≤R≤N1≤L≤R≤N

Output

对于每个询问,回答相应的值

Sample input and output

Sample Input Sample Output
  1. 5 4
  2. 2 1 2
  3. 1 2 4
  4. 1 3 5
  5. 2 3 3
  1. 0
  2. 5

Hint

注意可能会爆int哦

思路:

A - 卿学姐与公主

这是专题里少的可怜的水题之一啊!!!

这题是单点更新,区间查询(求最大值)。

用build函数构建线段树,然后update进行单点更新,query查询最大值就好了、、、

节点的附加信息是max,所受伤害的最大值,update就更新的这个

然后自己手写一波就好了(其实我是用的以前写的模板,改了一点东西就好了

  线段树的相关内容可以去我博客里找找。。

ac代码:

  1. #include <iostream>
  2. #include <algorithm>
  3. #include <cstdio>
  4. #include <cmath>
  5. #include <cstring>
  6. #include <queue>
  7. #include <stack>
  8. #include <map>
  9. #include <vector>
  10. #include <cstdlib>
  11. #include <string>
  12.  
  13. #define PI acos((double)-1)
  14. #define E exp(double(1))
  15. using namespace std;
  16. //#define MOD 772002+233
  17. #define K 100000
  18. struct node
  19. {
  20. long long maxt,sum;
  21. long long left,right;
  22. };
  23. struct node tree[*K+];
  24. long long a[*K+];
  25. int build(int id,int l,int r)
  26. {
  27. tree[id].left=l;tree[id].right=r;
  28. if(l==r)
  29. {
  30. tree[id].maxt=tree[id].sum=a[l];
  31. }
  32. else
  33. {
  34. build(*id,l,(l+r)/);
  35. build(*id+,(l+r)/+,r);
  36. tree[id].maxt=max(tree[*id].maxt,tree[*id+].maxt);
  37. tree[id].sum=(tree[*id].sum+tree[*id+].sum);
  38. }
  39. return ;
  40. }
  41.  
  42. int update(int id,int pos,long long v)
  43. {
  44. if(tree[id].left == tree[id].right)
  45. {
  46. tree[id].sum=tree[id].maxt=v+tree[id].sum;
  47. }
  48. else
  49. {
  50. int mid=(tree[id].left+tree[id].right)/;
  51. if (pos<=mid) update(id*,pos,v);
  52. else update(id*+,pos,v);
  53. tree[id].sum=(tree[id*].sum+tree[id*+].sum);
  54. tree[id].maxt=max(tree[id*].maxt,tree[id*+].maxt);
  55. }
  56. return ;
  57. }
  58.  
  59. long long querySum(int id,int l,int r)
  60. {
  61. if (tree[id].left==l&&tree[id].right==r)
  62. return tree[id].sum;
  63. else
  64. {
  65. int mid=(tree[id].left+tree[id].right)/;
  66. if (r<=mid) return querySum(id*,l,r);
  67. else if (l>mid) return querySum(id*+,l,r);
  68. else return querySum(id*,l,mid)+querySum(id*+,mid+,r);
  69. }
  70. }
  71. long long queryMax(int id,int l,int r)
  72. {
  73. if(l==tree[id].left && r==tree[id].right)
  74. return tree[id].maxt;
  75. int mid=(tree[id].left+tree[id].right)>>;
  76. long long ret=;
  77. if(r<=mid)
  78. ret=max(ret,queryMax(id<<,l,r));
  79. else if(l>=mid+)
  80. ret=max(ret,queryMax((id<<)+,l,r));
  81. else
  82. {
  83. long long a,b;
  84. a=queryMax(id<<,l,mid);
  85. b=queryMax((id<<)+,mid+,r);
  86. return max(a,b);
  87. }
  88. return ret;
  89. }
  90. int main (void)
  91. {
  92. int n,q;
  93. cin>>n>>q;
  94. memset(a,,sizeof(a));
  95. build(,,n);
  96. while(q--)
  97. {
  98. int t;
  99. scanf("%d",&t);
  100. if(t==)
  101. {
  102. long long x,y;
  103. scanf("%lld%lld",&x,&y);
  104. update(,x,y);
  105. }
  106. else
  107. {
  108. int x,y;
  109. scanf("%d%d",&x,&y);
  110. printf("%lld\n",queryMax(,x,y));
  111. }
  112. }
  113. return ;
  114. }

cdoj1324卿学姐与公主的更多相关文章

  1. cdoj 1324 卿学姐与公主 线段树裸题

    卿学姐与公主 Time Limit: 2000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit St ...

  2. CDOJ 1324 卿学姐与公主(分块)

    CDOJ 1324 卿学姐与公主(分块) 传送门: UESTC Online Judgehttp://acm.uestc.edu.cn/#/problem/show/1324 某日,百无聊赖的卿学姐打 ...

  3. A - 卿学姐与公主(线段树+单点更新+区间极值)

    A - 卿学姐与公主 Time Limit: 2000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submi ...

  4. UESTC - 1324 卿学姐与公主

    题目链接 某日,百无聊赖的卿学姐打开了某11区的某魔幻游戏 在这个魔幻的游戏里,生活着一个美丽的公主,但现在公主被关押在了魔王的城堡中. 英勇的卿学姐拔出利刃冲向了拯救公主的道路. 走过了荒野,翻越了 ...

  5. 卿学姐与公主 UESTC - 1324 分块模板题

    题意:http://acm.uestc.edu.cn/#/problem/show/1324 中文题,自己看喽. 题解:分块模板,update时顺便更新块属性.ask时先判掉belong[l]==be ...

  6. UESTC 1324:卿学姐与公主(分块)

    http://acm.uestc.edu.cn/#/problem/show/1324 题意:…… 思路:卿学姐的学习分块例题. 分块是在线处理区间问题的类暴力算法,复杂度O(n*sqrt(n)),把 ...

  7. CDOJ 1324 卿学姐与公主 分块

    题目地址 分块模板 #include<cstdio> #include<algorithm> #include<math.h> using namespace st ...

  8. UESTC 1324 卿学姐与公主 分块板子

    #include<iostream> #include<cmath> using namespace std; ; //表示当前数在哪一块里面 int belong[maxn] ...

  9. CDOJ1324-卿学姐与公主 【线段树点更新】

    http://acm.uestc.edu.cn/#/problem/show/1324 卿学姐与公主 Time Limit: 2000/1000MS (Java/Others)     Memory ...

随机推荐

  1. Oracle常用命令大全

    一.ORACLE的启动和关闭 1.在单机环境下 要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 su - oracle a.启动ORACLE系统 oracle>svrmgrl ...

  2. 【PM面试题】请设计一个老年人用的新闻App

    考虑用户需求及痛点 老年人由于特殊的生理特点,需要考虑其阅读的痛点,加入例如文字大小自定义,朗读新闻,放大镜功能.同时在软件设计上减少文字的量,多放入一些多媒体的内容. 老年人会对过去发生的一些事情产 ...

  3. 【POJ】2942 Knights of the Round Table(双连通分量)

    http://poj.org/problem?id=2942 各种逗.... 翻译白书上有:看了白书和网上的标程,学习了..orz. 双连通分量就是先找出割点,然后用个栈在找出割点前维护子树,最后如果 ...

  4. 卡夫卡(kafka)

    1.Kafka独特设计在什么地方?2.Kafka如何搭建及创建topic.发送消息.消费消息?3.如何书写Kafka程序?4.数据传输的事务定义有哪三种?5.Kafka判断一个节点是否活着有哪两个条件 ...

  5. C++ TR1、TR2与boost的关系

    C++ Technical Report 1 (TR1)是ISO/IEC TR 19768, C++ Library Extensions(函式库扩充)的一般名称.TR1是一份文件,内容提出了对C++ ...

  6. poj 3653(最短路)

    题目链接:http://poj.org/problem?id=3653 思路:题目意思很简单,就是二维平面上的图,要求起点到终点的最短路.建图略坑,需要坐标映射,化二维为一维.然后就是Dijkstra ...

  7. Visual Studio 2015 自定义文件编译

    自己编译好了 QT 5.6.0 Alpha 版本后,如何使用 VS2015 创建 QT 工程呢? 1.安装插件,安装失败!因为 VS2015 不再支持 ADDIN , 所以 QT-VS-ADDIN 只 ...

  8. centos 6.5 安装图形界面【转】

    最近想在centos 6.5上安装图形界面,在网上找到了方法.[原文链接] CentOS6相对于CentOS5的安装有了不少的进步,有不少默认的选项可以选择,如: Desktop :基本的桌面系统,包 ...

  9. Django中字典在html中的遍历

    Django中字典在html中的遍历 如:在view中定义的函数 info = {'} context = {"info": info} 要在html中变量出info的信息(注意i ...

  10. python中pip工具的安装与使用

    1.在网址https://pip.pypa.io/en/latest/installing 下载get-pip.py文件,放在python更目录,如python3.6目录下 2.在dos命令行中进入g ...