【HDU1754】I hate it!

来源:互联网 发布:ios10怎么信任软件 编辑:程序博客网 时间:2024/06/05 09:10

题面

很多学校流行一种比较的习惯。老师们很喜欢询问,从某某到某某当中,分数最高的是多少。
这让很多学生很反感。

不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的询问。当然,老师有时候需要更新某位同学的成绩。

Input

本题目包含多组测试,请处理到文件结束。
在每个测试的第一行,有两个正整数 N 和 M ( 0

Output

对于每一次询问操作,在一行里面输出最高成绩。

Sample Input

5 6
1 2 3 4 5
Q 1 5
U 3 6
Q 3 4
Q 4 5
U 2 9
Q 1 5

Sample Output

5
6
5
9

题解

(洛谷上的题目略有不同)
这道题目直接用线段树就可以解决
我只是拿来学习一下zkw线段树
具体的我也不知道为什么
学会了再写

//练习一下zkw线段树 #include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#include<algorithm>using namespace std;#define INF 200000000int M,n,m;int c[1<<20];void Build(int n)//建树 {      for(M=1;M-2<n;M<<=1);      for(int i=M+1;i<=M+n;++i)         scanf("%d",&c[i]);      for(int i=M;i;--i)      {         c[i]=max(c[i<<1],c[(i<<1)^1]);         c[i<<1]-=c[i];         c[(i<<1)^1]-=c[i];      }}int Query(int l,int r)//查询操作 {      int L=-INF,R=-INF;      l+=M-1;r+=M+1;//换成开区间操作      while(l^r^1)      {             L+=c[l];R+=c[r];             if(~l&1)L=max(L,c[l+1]);             if(r&1) R=max(R,c[r-1]);             l>>=1;r>>=1;      }      L+=c[l];R+=c[r];      int Ans=max(L,R);      for(l>>=1;l;l>>=1)Ans+=c[l];      return Ans;}void Change(int X,int w)//单点修改{      X+=M;      c[X]+=w-Query(X-M,X-M);      for(X>>=1;X;X>>=1)      {         int A=max(c[X<<1],c[(X<<1)^1]);         c[X<<1]-=A;         c[(X<<1)^1]-=A;         c[X]+=A;      }}int main(){               scanf("%d%d",&n,&m);               memset(c,0,sizeof(c));               Build(n);               for(int i=1;i<=m;++i)               {                        char ch;                        int A,B;                        cin>>ch;                        scanf("%d%d",&A,&B);                        if(ch=='U')//更新操作                        {                               if(Query(A,A)<B)                               Change(A,B);                        }                     else                     printf("%d\n",Query(A,B));               }      }      return 0;}
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 辞职后转为灵活就业养老怎么办 公司名称变更提取不了公积金怎么办 五险合一软件已经减员怎么办 法人社保不在投标单位怎么办 换工作单位后社保怎么办 在北京孩子没有一老一小怎么办 深户小孩怎么办社保卡 社保卡没办下来去医院住院怎么办 老年社保卡丢了怎么办 外墙掉瓷砖伤车伤人怎么办 医保卡姓名弄错了怎么办 走工伤和走社保怎么办 公司在朝阳社保在海淀怎么办 公司没缴纳个税怎么办 报个税工资报少了怎么办 医院预约单丢了怎么办 肛瘘手术后太疼怎么办 低位保肛手术后吻合口瘘怎么办 做完痔疮手术后大便困难怎么办 20岁长痔疮了怎么办 孕妇痔疮痒的难受怎么办 痔疮术后伤口不愈合怎么办 剖腹产液化伤口长的慢怎么办 内痔斑痕怎么办了能消化 油条面和稀了怎么办 解脲支原体感染怀孕怎么办 怀孕了检查出解脲支原体感染怎么办 大便是黑色的要怎么办 大人直肠给药不好意思怎么办 肛周脓肿长肉芽怎么办 二岁宝宝有直肠息肉怎么办 87岁老人得直肠息肉怎么办 做b超查出囊肿怎么办 解大便时肛门痒怎么办 生完孩子肛门痒怎么办 把达克宁软膏摸到肛门怎么办 痔疮手术后肛门痒怎么办 便秘拉完屁股疼怎么办 屁股拉屎拉破了怎么办 6岁小朋友屁眼痒怎么办 孩子屁屁偶尔痒怎么办