题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3238

题面:

题面PDF

题目大意:

从1到n编号,两种操作,操作一,S A X将A点的值修改为X。操作二,M A B,求区间AB的和。

解题:

线段树裸题,单点更新,区间求和。

代码:

#include <iostream>
#include <cstdio>
#include <algorithm>
#define maxn 200010
using namespace std;
int sum[maxn<<2],resi[maxn],x;
//建树操作
int build(int le,int ri,int u)
{//到单点了,更新 if(le==ri){sum[u]=resi[le];return sum[u];}else{//通过返回值,更新父亲节点 int mid=(le+ri)>>1;sum[u]=build(le,mid,u<<1)+build(mid+1,ri,(u<<1)+1);return sum[u];}
}
//查询操作,le,ri当前查询的区间左右边界,lef,rig要查询的区间左右边界,u节点编号
int query(int le,int ri,int lef,int rig,int u)
{//到达区间 if(le==lef&&ri==rig)return sum[u];int mid=(le+ri)>>1;//在当前区间左半边 if(lef>=le&&rig<=mid)return query(le,mid,lef,rig,u<<1);//在当前区间右半边 else if(lef>=(mid+1)&&rig<=ri)return query(mid+1,ri,lef,rig,(u<<1)+1);//横跨左右区间 elsereturn query(le,mid,lef,mid,u<<1)+query(mid+1,ri,mid+1,rig,(u<<1)+1);
}
//更新操作
void update(int le,int ri,int u,int v)
{//到达单点 if(le==ri){sum[u]=v;return;}else{int  mid=(le+ri)>>1;if(x<=mid)update(le,mid,u<<1,v);elseupdate(mid+1,ri,(u<<1)+1,v);//更新父亲节点 sum[u]=sum[u<<1]+sum[(u<<1)+1];}
}
int main()
{char s[4];int n,a,b,ans,cas=0;while(scanf("%d",&n)&&n){if(cas)printf("\nCase %d:\n",++cas);else printf("Case %d:\n",++cas);for(int i=1;i<=n;i++)scanf("%d",&resi[i]);build(1,n,1);while(1){scanf("%s",s);if(s[0]=='M'){scanf("%d%d",&a,&b);ans=query(1,n,a,b,1);printf("%d\n",ans);}else if(s[0]=='S'){scanf("%d%d",&a,&b);x=a;update(1,n,1,b);}else break;}}return 0;
}

UVA 12086 Potentiometers(线段树裸题)相关推荐

  1. POJ2777(线段树裸题)

    题目:http://poj.org/problem?id=2777 别忘了各地的return: 有可能输入的L<R,手动swap: 似乎是多组输入? pushup和pushdown的位置. (原 ...

  2. uva 12086 - Potentiometers(树状数组)

    题目链接:uva 12086 - Potentiometers 题目大意:给定n个整数,两个操作, S x y:把第x个数变成y M x y:计算第x个数到第y个数的总和 解题思路:用num数组记录每 ...

  3. 线段树模板题3:区间染色问题

    1.3线段树模板题3:区间染色问题 在DotA游戏中,帕吉的肉钩实际上是大多数英雄中最恐怖的东西.挂钩由长度相同的几个连续的金属棍组成. 现在,帕吉(Pudge)希望对挂接进行一些操作. 让我们将钩子 ...

  4. J.哭泣的阿木木(线段树模板题)

    哭泣的阿木木 Description 没啥用的背景故事: 在远古的恕瑞玛,有一个孤独而又忧郁的灵魂,阿木木.他在世间游荡,只为找到一个朋友.他遭受了一种远古的巫术诅咒,注定忍受永世的孤单,因为被他触碰 ...

  5. UVA - 12086 - Potentiometers - (单点更新,区间查询)

    题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...

  6. 小清的线段树25题日志01 线段树下你和我 欢乐多又多

    前言 难度大致会按排序来 就不写总结啦 嘻嘻 适合刚学线段树的人(和我一样 练手 /*if you can't see the repayWhy not just work step by stepr ...

  7. 玲珑杯 1164 - 战舰萝莉 线段树水题

    点击打开链接 DESCRIPTION 在大战之后,法力浮·鳝AK迅速驾船驶向北海.当然他知道水之灵不可能那么容易得到,正如爱迪生曾说过:"要把BOSS打倒就要准备足够的等级."所以 ...

  8. hdu1156(简单线段树 模板题)

    敌兵布阵 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  9. Bzoj 4408: [Fjoi 2016]神秘数 可持久化线段树,神题

    4408: [Fjoi 2016]神秘数 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 177  Solved: 128 [Submit][Stat ...

最新文章

  1. phpStorm 2016.1 最新版激活方法
  2. [学习笔记]信号与系统
  3. Object C学习笔记12-集合
  4. 在百度搜索页添加公司总部的客服电话
  5. python连接mysql的一些基础知识+安装Navicat可视化数据库+flask_sqlalchemy写数据库
  6. 3d打印英语文献_【玩手工学英语】形状主题:The 3D Shapes Song
  7. android 脚本发短信,Android使用SmsManager实现短信发送功能
  8. vsftpd之启用OpenSSL认证
  9. 文件复制 详解(C++)
  10. Visio文件编辑查看工具Visio Viewer for Mac
  11. vue实现可拖拽div
  12. 【软件构造】过程与配置管理
  13. 重写QLabel实现图片显示框选截取保存
  14. linux下如何给home目录分配空间,Linux 分配/home的磁盘空间给根目录
  15. 上海联通第一家冰激凌无限店正式开业,拥抱新零售时代!
  16. 【汇编】汇编中的函数
  17. DSP28335—FLASH烧写的方法
  18. [Render] Arm Graphics Analyzer 用户指南 [4] - 分析你的捕获
  19. OpenGL之obj + mtl 格式说明
  20. NSG44273低侧驱动IC

热门文章

  1. 飞桨PaddlePaddle论文复现:图像的一阶运动模型(初版)
  2. Java8之function函数详解
  3. 三、使用 Spyder IDE 工具
  4. Fabric启用CouchDB
  5. NC63开发——动态建模
  6. openSUSE-11.1 on TP SL500
  7. BMZCTF:哆啦A梦
  8. 高德地图 JSAPI 给指定部分标记颜色
  9. 趣味c语言题目,C语言趣味程序设计题目百例.doc
  10. 语音识别补充(一)(音素,三音素)