UVA 12086 Potentiometers(线段树裸题)
题目链接: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(线段树裸题)相关推荐
- POJ2777(线段树裸题)
题目:http://poj.org/problem?id=2777 别忘了各地的return: 有可能输入的L<R,手动swap: 似乎是多组输入? pushup和pushdown的位置. (原 ...
- uva 12086 - Potentiometers(树状数组)
题目链接:uva 12086 - Potentiometers 题目大意:给定n个整数,两个操作, S x y:把第x个数变成y M x y:计算第x个数到第y个数的总和 解题思路:用num数组记录每 ...
- 线段树模板题3:区间染色问题
1.3线段树模板题3:区间染色问题 在DotA游戏中,帕吉的肉钩实际上是大多数英雄中最恐怖的东西.挂钩由长度相同的几个连续的金属棍组成. 现在,帕吉(Pudge)希望对挂接进行一些操作. 让我们将钩子 ...
- J.哭泣的阿木木(线段树模板题)
哭泣的阿木木 Description 没啥用的背景故事: 在远古的恕瑞玛,有一个孤独而又忧郁的灵魂,阿木木.他在世间游荡,只为找到一个朋友.他遭受了一种远古的巫术诅咒,注定忍受永世的孤单,因为被他触碰 ...
- UVA - 12086 - Potentiometers - (单点更新,区间查询)
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...
- 小清的线段树25题日志01 线段树下你和我 欢乐多又多
前言 难度大致会按排序来 就不写总结啦 嘻嘻 适合刚学线段树的人(和我一样 练手 /*if you can't see the repayWhy not just work step by stepr ...
- 玲珑杯 1164 - 战舰萝莉 线段树水题
点击打开链接 DESCRIPTION 在大战之后,法力浮·鳝AK迅速驾船驶向北海.当然他知道水之灵不可能那么容易得到,正如爱迪生曾说过:"要把BOSS打倒就要准备足够的等级."所以 ...
- hdu1156(简单线段树 模板题)
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- Bzoj 4408: [Fjoi 2016]神秘数 可持久化线段树,神题
4408: [Fjoi 2016]神秘数 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 177 Solved: 128 [Submit][Stat ...
最新文章
- phpStorm 2016.1 最新版激活方法
- [学习笔记]信号与系统
- Object C学习笔记12-集合
- 在百度搜索页添加公司总部的客服电话
- python连接mysql的一些基础知识+安装Navicat可视化数据库+flask_sqlalchemy写数据库
- 3d打印英语文献_【玩手工学英语】形状主题:The 3D Shapes Song
- android 脚本发短信,Android使用SmsManager实现短信发送功能
- vsftpd之启用OpenSSL认证
- 文件复制 详解(C++)
- Visio文件编辑查看工具Visio Viewer for Mac
- vue实现可拖拽div
- 【软件构造】过程与配置管理
- 重写QLabel实现图片显示框选截取保存
- linux下如何给home目录分配空间,Linux 分配/home的磁盘空间给根目录
- 上海联通第一家冰激凌无限店正式开业,拥抱新零售时代!
- 【汇编】汇编中的函数
- DSP28335—FLASH烧写的方法
- [Render] Arm Graphics Analyzer 用户指南 [4] - 分析你的捕获
- OpenGL之obj + mtl 格式说明
- NSG44273低侧驱动IC