codevs3243:区间翻转,线段树
来源:互联网 发布:java sleep 释放锁 编辑:程序博客网 时间:2024/06/16 15:02
题目描述 Description
给出N个数,要求做M次区间翻转(如1 2 3 4变成4 3 2 1),求出最后的序列
输入描述 Input Description
第一行一个数N,下一行N个数表示原始序列,在下一行一个数M表示M次翻转,之后的M行每行两个数L,R表示将区间[L,R]翻转。
输出描述 Output Description
一行N个数 , 表示最终序列。
样例输入 Sample Input
4
1 2 3 4
2
1 2
3 4
样例输出 Sample Output
2 1 4 3
数据范围及提示 Data Size & Hint
对于30%的数据满足n<=100 , m <= 10000
对于100%的数据满足n <= 150000 , m <= 150000
对于100%的数据满足n为2的幂,且L = i * 2^j + 1 , R = (i + 1) * 2^j
帖代码,感谢XS的调试
program cx;var i,BTM,n,m,l,r:longint; trs,trlc,trrc,trw,trfz:array[0..100]of longint;procedure down(t:longint);var temp:longint;begin if trfz[t]=0 then exit; trfz[t]:=0; trfz[trlc[t]]:=trfz[trlc[t]]xor 1; trfz[trrc[t]]:=trfz[trrc[t]]xor 1; temp:=trlc[t]; trlc[t]:=trrc[t]; trrc[t]:=temp;end;function cmp(x:longint):longint; //XS令人苦笑不得的函数,求左子树SIZEbegin exit(trs[trlc[x]]);end;procedure change(t,ll,rr:longint);begin if (ll=1)and(rr=trs[t]) then begin trfz[t]:=trfz[t] xor 1; exit; end; down(t); if ll-cmp(t)>=1 then begin ll:=ll-cmp(t); rr:=rr-cmp(t); change(trrc[t],ll,rr); end else change(trlc[t],ll,rr);end;procedure print(t:longint);var i:longint;begin if trlc[t]=0 then begin write(trw[t],' '); exit; end; down(t); print(trlc[t]); print(trrc[t]);end;beginassign(input,'gym.in');reset(input); read(n); BTM:=1; while BTM<n do BTM:=BTM<<1; dec(BTM); for i:=BTM+1 to BTM+n do begin read(trw[i]); trs[i]:=1; end; for i:=BTM downto 1 do begin trlc[i]:=i<<1; trrc[i]:=(i<<1)+1; trs[i]:=trs[trlc[i]]+trs[trrc[i]]; end; read(m); for i:=1 to m do begin read(l,r); change(1,l,r); end; print(1); writeln;close(input);end.
0 0
- codevs3243:区间翻转,线段树
- [CODEVS3243]区间翻转(线段树||splay||块链)
- 线段树区间翻转模板
- [SPOJ IITWPC4F Gopu and the Grid Problem]线段树区间翻转
- 计蒜客 硬币翻转 线段树
- 线段树 区间合并
- 线段树区间修改
- 线段树 区间合并
- 线段树区间更新
- 线段树区间更新
- 线段树 区间合并
- 线段树 区间更新
- 区间求最值 线段树
- hdu3911 区间线段树
- 线段树 区间合并
- 线段树区间求和
- 线段树区间更新
- 线段树-区间合并
- Adapter的getView方法详解
- adapter的主页显示
- Oracle学习笔记——PL/SQL编程基础
- [Canvas绘图] 第30节 沙场点兵
- 任务调度开源框架Quartz动态添加、修改和删除定时任务
- codevs3243:区间翻转,线段树
- 蓝牙研究
- 我的MYSQL学习心得(五) 运算符
- ios 例子网站
- Tesseract OCR(光学字符识别)教程
- [leetcode] 202. Happy Number
- android-dev-cn
- hibernate 错误:org.hibernate.HibernateException: Unable to get the default Bean Validation factory
- 关于android的Application