lightoj1080 线段树
- //Accepted 6628 KB 520 ms
- //I a b 把a到b区间的二进制位去反,转化成a到b区间的数全部加1
- //Q a 判断第a位的奇偶
- #include <cstdio>
- #include <cstring>
- #include <iostream>
- #include <queue>
- #include <cmath>
- #include <algorithm>
- using namespace std;
- /**
- * This is a documentation comment block
- * 如果有一天你坚持不下去了,就想想你为什么走到这儿!
- * @authr songt
- */
- ;
- struct node
- {
- int l,r;
- int add;
- int t;
- }f[imax_n*];
- string s;
- void build(int t,int l,int r)
- {
- f[t].l=l;
- f[t].r=r;
- f[t].add=;
- if (l==r)
- {
- f[t].t=s[l-]-';
- return ;
- }
- ;
- build(*t,l,mid);
- build(*t+,mid+,r);
- f[t].t=f[*t].t+f[*t+].t;
- }
- void update(int t,int l,int r,int c)
- {
- if (f[t].l==l && f[t].r==r)
- {
- f[t].add+=c;
- return ;
- }
- f[t].t+=(r-l+)*c;
- ;
- *t,l,r,c);
- else
- {
- *t+,l,r,c);
- else
- {
- update(*t,l,mid,c);
- update(*t+,mid+,r,c);
- }
- }
- }
- int query(int t,int l,int r)
- {
- if (f[t].l==l && f[t].r==r)
- {
- );
- }
- ;
- f[t].t+=(r-l+)*f[t].add;
- f[*t].add+=f[t].add;
- f[*t+].add+=f[t].add;
- f[t].add=;
- *t,l,r);
- else
- {
- *t+,l,r);
- else
- {
- *t,l,mid)+query(*t+,mid+,r);
- }
- }
- }
- ];
- int Q;
- int x,y;
- void slove()
- {
- int len=s.length();
- build(,,len);
- scanf("%d",&Q);
- while (Q--)
- {
- scanf("%s",sq);
- ]=='I')
- {
- scanf("%d%d",&x,&y);
- update(,x,y,);
- }
- else
- {
- scanf("%d",&x);
- ,x,x);
- printf();
- }
- }
- }
- int main()
- {
- int T;
- scanf("%d",&T);
- ;
- while (T--)
- {
- cin>>s;
- printf("Case %d:\n",++t);
- slove();
- }
- ;
- }
lightoj1080 线段树的更多相关文章
- Lightoj1080 【线段树】
题意: 给你一个0/1的数组,然后给你n段区间,说这个区间里要反转一次,然后给你Q个询问,问你这个位置是什么: 思路: 我们线段树维护一下就好了额: 其实反转的话,还是算次数是不是,奇偶嘛: #inc ...
- bzoj3932--可持久化线段树
题目大意: 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的 任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任务从第Si秒开始,在第 ...
- codevs 1082 线段树练习 3(区间维护)
codevs 1082 线段树练习 3 时间限制: 3 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description 给你N个数,有两种操作: 1:给区 ...
- codevs 1576 最长上升子序列的线段树优化
题目:codevs 1576 最长严格上升子序列 链接:http://codevs.cn/problem/1576/ 优化的地方是 1到i-1 中最大的 f[j]值,并且A[j]<A[i] .根 ...
- codevs 1080 线段树点修改
先来介绍一下线段树. 线段树是一个把线段,或者说一个区间储存在二叉树中.如图所示的就是一棵线段树,它维护一个区间的和. 蓝色数字的是线段树的节点在数组中的位置,它表示的区间已经在图上标出,它的值就是这 ...
- codevs 1082 线段树区间求和
codevs 1082 线段树练习3 链接:http://codevs.cn/problem/1082/ sumv是维护求和的线段树,addv是标记这歌节点所在区间还需要加上的值. 我的线段树写法在运 ...
- PYOJ 44. 【HNSDFZ2016 #6】可持久化线段树
#44. [HNSDFZ2016 #6]可持久化线段树 统计 描述 提交 自定义测试 题目描述 现有一序列 AA.您需要写一棵可持久化线段树,以实现如下操作: A v p x:对于版本v的序列,给 A ...
- CF719E(线段树+矩阵快速幂)
题意:给你一个数列a,a[i]表示斐波那契数列的下标为a[i],求区间对应斐波那契数列数字的和,还要求能够维护对区间内所有下标加d的操作 分析:线段树 线段树的每个节点表示(f[i],f[i-1])这 ...
- 【BZOJ-3779】重组病毒 LinkCutTree + 线段树 + DFS序
3779: 重组病毒 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 224 Solved: 95[Submit][Status][Discuss] ...
随机推荐
- 三张图彻底了解Java中字符串的不变性
转载: 三张图彻底了解Java中字符串的不变性 定义一个字符串 String s = "abcd"; s中保存了string对象的引用.下面的箭头可以理解为"存储他的引用 ...
- js中的apply和call API
借用网上的一个例子: fun.call(this,arg1,arg2,arg3) fun.apply(this,arguments) this.fun(arg1,arg2,arg3) 三种方法等效. ...
- HTML5 localStorage and sessionStorage
转载至:http://blog.csdn.net/fdipzone/article/details/25517615 HTML5 提供两种web存储方法,localStorage 与 sessionS ...
- HDU-----(1083)Courses(最大匹配)
Courses Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total S ...
- ztree 展示
1. controller@RequestMapping("/function.htm") public String function(HttpSession session, ...
- 阮一峰:RSA算法原理(一)
今天看到一篇好文章,关于加密算法,收藏了觉得不过瘾,还是自己贴一遍,也能加深一下印象. 原文链接:http://www.ruanyifeng.com/blog/2013/06/rsa_algorith ...
- 告别node-forever,拥抱PM2
告别node-forever,拥抱PM2 返回原文英文原文:Goodbye node-forever,hello PM2 devo.ps团队对JavaScript的迷恋已经不是什么秘密了;node.j ...
- chkconfig命令
chkconfig --list #列出系统所有的服务启动情况chkconfig --add xxx #增加xxx服务chkconfig --de ...
- HDU 1688 Sightseeing
题目链接:Sightseeing 题意:求最短路和比最短路长度+1的所有路径条数. 附代码:用数组记录最短和次短路径的长度和条数,一次更新,直到没有边可以更新. #include <stdio. ...
- su和su -和sudo
1.su和sudo没有切换工作目录和环境变量,只是赋予用户权限, 而su -是真正切换到root登录,工作目录切换到/root,环境变量也同时改变. [root@oc3408554812 home]# ...