线段树的裸题;

但是操作很奇怪,开方是不能lazy tag的

看来只能暴力修改了

但注意,开放开到1的时候就不用开,立一个flag就可以了

这可以大大的优化;

其实我是来复习线段树的

  1. var tree:array[..] of int64;
  2.     lazy:array[..] of boolean;
  3.     a:array[..] of int64;
  4.     n,m,ch,p,q,l,r,i:longint;
  5.  
  6. procedure swap(var a,b:longint);
  7.   var c:longint;
  8.   begin
  9.     c:=a;
  10.     a:=b;
  11.     b:=c;
  12.   end;
  13.  
  14. procedure update(i:longint);
  15.   begin
  16.     tree[i]:=tree[i*]+tree[i*+];
  17.     lazy[i]:=lazy[i*] and lazy[i*+];
  18.   end;
  19.  
  20. procedure build(i,l,r:longint);
  21.   var m:longint;
  22.   begin
  23.     if l=r then
  24.     begin
  25.       tree[i]:=a[l];
  26.       lazy[i]:=false;
  27.     end
  28.     else begin
  29.       m:=(l+r) shr ;
  30.       build(i*,l,m);
  31.       build(i*+,m+,r);
  32.       update(i);
  33.     end;
  34.   end;
  35.  
  36. procedure work(i,l,r:longint);
  37.   var m:longint;
  38.   begin
  39.     if l=r then
  40.     begin
  41.       tree[i]:=trunc(sqrt(tree[i]));
  42.       if tree[i]= then lazy[i]:=true;
  43.     end
  44.     else begin
  45.       m:=(l+r) shr ;
  46.       if (p<=m) and not lazy[i*] then work(i*,l,m);
  47.       if (q>m) and not lazy[i*+] then work(i*+,m+,r);
  48.       update(i);
  49.     end;
  50.   end;
  51.  
  52. function ask(i,l,r:longint):int64;
  53.   var m:longint;
  54.   begin
  55.     if (p<=l) and (q>=r) then exit(tree[i])
  56.     else begin
  57.       m:=(l+r) shr ;
  58.       ask:=;
  59.       if p<=m then ask:=ask+ask(i*,l,m);
  60.       if q>m then ask:=ask+ask(i*+,m+,r);
  61.     end;
  62.   end;
  63.  
  64. begin
  65.   readln(n);
  66.   for i:= to n do
  67.     read(a[i]);
  68.   build(,,n);
  69.   readln(m);
  70.   for i:= to m do
  71.   begin
  72.     readln(ch,p,q);
  73.     if p>q then swap(p,q);
  74.     if ch= then
  75.       work(,,n)
  76.     else if ch= then
  77.       writeln(ask(,,n));
  78.   end;
  79. end.

bzoj3211,bzoj3038的更多相关文章

  1. bzoj3211花神游历各国&&bzoj3038上帝造题的七分钟2*

    bzoj3211花神游历各国 题意: n个数的序列,m个操作,操作两种:区间开根(向下取整)和区间求和.n≤100000,m≤200000,序列中的数非负且≤109. 题解: 一个≤109的数开6次根 ...

  2. Pyhton开源框架(加强版)

    info:Djangourl:https://www.oschina.net/p/djangodetail: Django 是 Python 编程语言驱动的一个开源模型-视图-控制器(MVC)风格的 ...

  3. MPlayer

    名称   mplayer − 电影播放器 mencoder − 电影编解码器 概要   mplayer [选项] [文件|URL|播放列表|−] mplayer [选项] 文件1 [指定选项] [文件 ...

  4. python 爬取腾讯微博并生成词云

    本文以延参法师的腾讯微博为例进行爬取并分析 ,话不多说 直接附上源代码.其中有比较详细的注释. 需要用到的包有 BeautifulSoup WordCloud jieba # coding:utf-8 ...

  5. 面经 cisco

    1. 优先级反转问题及解决方法 (1)什么是优先级反转 简单从字面上来说,就是低优先级的任务先于高优先级的任务执行了,优先级搞反了.那在什么情况下会生这种情况呢? 假设三个任务准备执行,A,B,C,优 ...

  6. linux驱动(续)

    网络通信 --> IO多路复用之select.poll.epoll详解 IO多路复用之select.poll.epoll详解      目前支持I/O多路复用的系统调用有 select,psel ...

  7. HttpServletRequest对象(一)

    javaweb学习总结(十)——HttpServletRequest对象(一) 一.HttpServletRequest介绍 HttpServletRequest对象代表客户端的请求,当客户端通过HT ...

  8. 【bzoj3211】花神游历各国&&【bzoj3038】上帝造题的七分钟2

    bzoj3038]上帝造题的七分钟2 Description XLk觉得<上帝造题的七分钟>不太过瘾,于是有了第二部. “第一分钟,X说,要有数列,于是便给定了一个正整数数列. 第二分钟, ...

  9. bzoj3211 花神游历各国 线段树,势能分析

    [bzoj3211]花神游历各国 2014年3月17日2,7230 Description   Input   Output 每次x=1时,每行一个整数,表示这次旅行的开心度 Sample Input ...

随机推荐

  1. 《疯狂的android讲义第3版》读书笔记

    第一章.开始启程,你的第一行android代码 1.android系统架构: 1)linux内核层:为底层硬件提供驱动,如显示驱动.音频驱动.照相机驱动.蓝牙驱动.Wifi驱动.电源管理等 2)系统运 ...

  2. javascript获取ckeditor编辑器的值(实现代码)

    CKeditor编辑器是FCKeditor的升级版本想对于FCK来说,确实比较好用,加载速度也比较快以下是如果通过JS获取CKeditor编辑器的值,用于表单验证 if(CKEDITOR.instan ...

  3. Spark Streaming揭秘 Day15 No Receivers方式思考

    Spark Streaming揭秘 Day15 No Receivers方式思考 在前面也有比较多的篇幅介绍了Receiver在SparkStreaming中的应用,但是我们也会发现,传统的Recei ...

  4. Linked List Sorting (链表)

    Linked List Sorting (链表)   A linked list consists of a series of structures, which are not necessari ...

  5. mac上xampp配置

    sudo su /Applications/XAMPP/xamppfiles/xampp security

  6. NotifyIcon制作任务栏托盘菜单

    常用软件飞信.QQ在任务栏中的图标ICO,以及鼠标移动到图标是右键菜单选项 1.首先制作任务栏图标 this.ShowInTaskbar = true; 2.窗体最小化时或者关闭时隐藏到任务栏,有时候 ...

  7. 十四、mysql 分区之 HASH && KEY

    .hash分区 PS::个人觉得HASH分区很好很强大,简单确分布极其均匀 创建实例: CREATE TABLE HASH_EMP ( tid int, tname ) ) PARTITION ; 将 ...

  8. SPOJ 4487 Splay 基本操作

    插入操作,删除操作和置换操作都是单点的,所以不需要lazy标记.这个很简单,都是两次RotateTo,一次Splay操作就搞定. 求最大连续字段和的操作和线段树的题目类似,只需要保存最左边的连续最大字 ...

  9. MyBatis学习笔记之resultMap

    使用mybatis不能不说的是resultMap 相比resultClass来说resultMap可以适应更复杂的关系映射,允许指定字段的数据类型,支持“select *” ,并不要求定义 Resul ...

  10. Homework3

    1. 切换路径到想要保存的目录下,使用git init创建仓库: 2. 在仓库下创建文件Readme.txt,使用git add命令添加到暂存区和 git commit 命令提交到仓库: 3.  修改 ...