分块试水--CODEVS4927 线段树练习5

模板

  1 #include<stdio.h>
  2 #include<algorithm>
  3 #include<string.h>
  4 #include<stdlib.h>
  5 #include<math.h>
  6 //#include<bitset>
  7 //#include<iostream>
  8 using namespace std;
  9 
 10 int n,m,q;
 11 #define maxn 100011
 12 #define maxm 361
 13 #define LL long long
 14 const LL inf=1e18;
 15 LL a[maxn],add[maxm],be[maxm],sum[maxm],Max[maxm],Min[maxm]; bool hasbe[maxm];
 16 int bel[maxn],tot;
 17 
 18 void down(int x)
 19 {
 20     int l=(x-1)*m+1,r=min(x*m,n);
 21     for (int i=l;i<=r;i++)
 22     {
 23         if (add[x]) a[i]+=add[x];
 24         else if (hasbe[x]) a[i]=be[x];
 25     }
 26     add[x]=hasbe[x]=0;
 27 }
 28 void up(int x)
 29 {
 30     int l=(x-1)*m+1,r=min(x*m,n);
 31     sum[x]=0; Max[x]=-inf; Min[x]=inf;
 32     for (int i=l;i<=r;i++)
 33         sum[x]+=a[i],Max[x]=max(Max[x],a[i]),Min[x]=min(Min[x],a[i]);
 34 }
 35 void Addsingle(int x,int y,int v)
 36 {
 37     down(bel[x]);
 38     for (int i=x;i<=y;i++) a[i]+=v;
 39     up(bel[x]);
 40 }
 41 void Add(int x,int y,int v)
 42 {
 43     if (bel[x]==bel[y]) Addsingle(x,y,v);
 44     else
 45     {
 46         int j;
 47         for (j=x;bel[j]==bel[x];j++);
 48         Addsingle(x,j-1,v);
 49         for (j=y;bel[j]==bel[y];j--);
 50         Addsingle(j+1,y,v);
 51         for (int i=bel[x]+1;i<bel[y];i++)
 52         {
 53             if (hasbe[i]) be[i]+=v;
 54             else add[i]+=v;
 55             sum[i]+=1ll*m*v;
 56             Max[i]+=v; Min[i]+=v;
 57         }
 58     }
 59 }
 60 void Besingle(int x,int y,int v)
 61 {
 62     down(bel[x]);
 63     for (int i=x;i<=y;i++) a[i]=v;
 64     up(bel[x]);
 65 }
 66 void Be(int x,int y,int v)
 67 {
 68     if (bel[x]==bel[y]) Besingle(x,y,v);
 69     else
 70     {
 71         int j;
 72         for (j=x;bel[j]==bel[x];j++);
 73         Besingle(x,j-1,v);
 74         for (j=y;bel[j]==bel[y];j--);
 75         Besingle(j+1,y,v);
 76         for (int i=bel[x]+1;i<bel[y];i++)
 77         {
 78             if (add[i]) add[i]=0;
 79             hasbe[i]=1; be[i]=v;
 80             sum[i]=1ll*m*v;
 81             Max[i]=Min[i]=v;
 82         }
 83     }
 84 }
 85 LL qsumsingle(int x,int y)
 86 {
 87     LL ans=0;
 88     for (int i=x;i<=y;i++)
 89     {
 90         if (hasbe[bel[i]]) ans+=be[bel[i]];
 91         else ans+=a[i]+add[bel[i]];
 92     }
 93     return ans;
 94 }
 95 LL qsum(int x,int y)
 96 {
 97     if (bel[x]==bel[y]) return qsumsingle(x,y);
 98     else
 99     {
100         int j;
101         for (j=x;bel[j]==bel[x];j++);
102         LL ans=qsumsingle(x,j-1);
103         for (j=y;bel[j]==bel[y];j--);
104         ans+=qsumsingle(j+1,y);
105         for (int i=bel[x]+1;i<bel[y];i++) ans+=sum[i];
106         return ans;
107     }
108 }
109 LL qmaxsingle(int x,int y)
110 {
111     LL ans=-inf;
112     for (int i=x;i<=y;i++)
113     {
114         if (hasbe[bel[i]]) ans=max(ans,be[bel[i]]);
115         else ans=max(ans,a[i]+add[bel[i]]);
116     }
117     return ans;
118 }
119 LL qmax(int x,int y)
120 {
121     if (bel[x]==bel[y]) return qmaxsingle(x,y);
122     else
123     {
124         int j;
125         for (j=x;bel[j]==bel[x];j++);
126         LL ans=qmaxsingle(x,j-1);
127         for (j=y;bel[j]==bel[y];j--);
128         ans=max(ans,qmaxsingle(j+1,y));
129         for (int i=bel[x]+1;i<bel[y];i++) ans=max(ans,Max[i]);
130         return ans;
131     }
132 }
133 LL qminsingle(int x,int y)
134 {
135     LL ans=inf;
136     for (int i=x;i<=y;i++)
137     {
138         if (hasbe[bel[i]]) ans=min(ans,be[bel[i]]);
139         else ans=min(ans,a[i]+add[bel[i]]);
140     }
141     return ans;
142 }
143 LL qmin(int x,int y)
144 {
145     if (bel[x]==bel[y]) return qminsingle(x,y);
146     else
147     {
148         int j;
149         for (j=x;bel[j]==bel[x];j++);
150         LL ans=qminsingle(x,j-1);
151         for (j=y;bel[j]==bel[y];j--);
152         ans=min(ans,qminsingle(j+1,y));
153         for (int i=bel[x]+1;i<bel[y];i++) ans=min(ans,Min[i]);
154         return ans;
155     }
156 }
157 int main()
158 {
159     scanf("%d%d",&n,&q);
160     m=(int)sqrt(n);
161     for (int i=1;i<=n;i++) bel[i]=(i-1)/m+1;
162     tot=bel[n];
163     for (int i=1;i<=tot;i++) Max[i]=-inf,Min[i]=inf;
164     for (int i=1;i<=n;i++)
165     {
166         scanf("%lld",&a[i]);
167         sum[bel[i]]+=a[i];
168         Max[bel[i]]=max(Max[bel[i]],a[i]);
169         Min[bel[i]]=min(Min[bel[i]],a[i]);
170     }
171     
172     char c[10];int x,y,z;
173     while (q--)
174     {
175         scanf("%s%d%d",c,&x,&y);
176         if (c[0]=='a') scanf("%d",&z),Add(x,y,z);
177         else if (c[1]=='e') scanf("%d",&z),Be(x,y,z);
178         else if (c[1]=='u') printf("%lld\n",qsum(x,y));
179         else if (c[1]=='a') printf("%lld\n",qmax(x,y));
180         else printf("%lld\n",qmin(x,y));
181     }
182     return 0;
183 }
View Code

 

转载于:https://www.cnblogs.com/Blue233333/p/8034325.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/571438.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【JVM】类的生命周期【转+整理】

参考如下三篇并整理。 1.Java类加载机制详解 2.深入理解Java&#xff1a;类加载机制及反射 3.jvm系列(一):java类的加载机制 类的生命周期是从被加载到虚拟机内存中开始&#xff0c;到卸载出内存结束。过程共有七个阶段。 1.加载---2.验证---3.准备---3.解析---5.初始化---6.使…

java概念,Java基础概念

1. Java编译程序将Java源程序翻译成JVM可执行代码-Java字节码。这一过程同C/C不同。当C编译器翻译成一个对象代码时&#xff0c;该代码是为在某一特定硬件平台运行而产生的。因此&#xff0c;在编译过程中&#xff0c;编译程序通过查表将所有符合引用转换为特定的内存偏移量。而…

【Excle】如何隐藏数据透视表中的错误值

如下&#xff1a;数据透视表出现错误怎么解决呢步骤方法①单击数据透视表任意单元格→数据透视表工具→分析→选项→勾选“对于错误值显示”→确定方法②右键→数据透视表选项&#xff08;同样可以修改&#xff09;转载于:https://www.cnblogs.com/OliverQin/p/8043469.html

vue怎么让接口带上cookie_在Vue中怎么使用cookie 之 vue-cookies

cookie 在工作中比较常用, 可以自行封装一些 添加/删除/获取cookie的方法, 可参考这个在Vue中有个很好用的插件 vue-cookiesgithub地址&#xff1a;https://github.com/cmp-cc/vue-cookies我们具体来看下怎么使用这个插件的使用第一步&#xff1a;安装vue-cookienpm install vu…

php 微信分享链接怎么弄,PHP实现 微信--分享朋友链接

不是些高深知识,但是第一次做,确实费了很多的时间.终于一点一点的扣了出来. 目前已经使用中.解决这个问题,总共碰到了几次BUG,1是生成的签名不对,自己打印出来,在去微信的签名算法页面一一核对.这时候如果对了,还是不成功.那就是需要动态获取URL链接的.最后需要将 函数写在为微…

MySQL中整型和字符串类型指定长度的含义

引入&#xff1a; int(5)和char(5)或者varchar(5)中的数字指的是什么意思&#xff1f;是字节数&#xff0c;还是字符长度&#xff1f;为什么在整型中指定了int(5)却可以输入123456&#xff1f; 答案是后者&#xff0c;不管是整型还是字符串类型&#xff0c;后面跟的数字都是字符…

php网站开发项目实战,PHP动态网站开发项目实战

任务1 分析网站需求11.1 知识准备11.1.1 功能结构图11.1.2 用例图21.2 任务实现51.2.1 花公子蜂蜜网站项目功能结构分析51.2.2 花公子蜂蜜网站项目用例分析61.3 经验传递71.4 知识拓展8任务2 设计网站前台版面92.1 知识准备92.1.1 网站版面设计流程92.1.2 网站版面设计原则102.…

repo同步代码_工欲善其事,必先利其器:repo 介绍

介绍此repo非彼repo。这里的repo&#xff0c;是指谷歌公司的一款小工具&#xff0c;名字就叫repo(我承认&#xff0c;这不是一个好名字&#xff0c;Google里面怎么搜都搜不到它的真身)。解决的问题有时候&#xff0c;我们需要在一台电脑上克隆很多个代码仓库&#xff0c;编译它…

洛谷 P1754 球迷购票问题

P1754 球迷购票问题 题目背景 盛况空前的足球赛即将举行。球赛门票售票处排起了球迷购票长龙。 按售票处规定&#xff0c;每位购票者限购一张门票&#xff0c;且每张票售价为50元。在排成长龙的球迷中有N个人手持面值50元的钱币&#xff0c;另有N个人手持面值100元的钱币。假设…

php date函数实现,PHP date() 函数可实现的功能列表

date() 函数格式化本地日期和时间&#xff0c;并返回已格式化的日期字符串。date(format,timestamp);format 参数为必填&#xff0c;格式为何种格式timestamp 可选参数。规定整数的 Unix 时间戳。默认是当前的本地时间(time())。format参数如下&#xff1a;d - 一个月中的第几天…

ddd 企业应用架构模式_灵魂拷问:用了DDD分包就是落地了领域驱动设计吗?谈谈DDD本质...

学习DDD的时候&#xff0c;作为开发&#xff0c;我们更关心它在技术层面的东西&#xff0c;尤其体现在DDD的分包方式、编码技巧等方面。自然的&#xff0c;我们不禁发问&#xff0c;用了DDD的分包&#xff0c;就是实践落地了DDD了么&#xff1f;不卖关子&#xff0c;直接说答案…

java常见编码

摘自&#xff1a;http://www.cnblogs.com/yaya-yaya/p/5768616.html红色 主要点  灰色 内容 绿色 知识点 橘色 补充内容几种常见的编码格式 为什么要编码 不知道大家有没有想过一个问题&#xff0c;那就是为什么要编码&#xff1f;我们能不能不编码&#xff1f;要…

准确率 召回率_机器学习中F值(F-Measure)、准确率(Precision)、召回率(Recall)

在机器学习、数据挖掘、推荐系统完成建模之后&#xff0c;需要对模型的效果做评价。业内目前常常采用的评价指标有准确率(Precision)、召回率(Recall)、F值(F-Measure)等&#xff0c;下图是不同机器学习算法的评价指标。下文讲对其中某些指标做简要介绍。本文针对二元分类器&am…

php 前置操作方法,前置操作-THINKPHP 5.0 手册最新版

前置操作可以为某个或者某些操作指定前置执行的操作方法&#xff0c;设置 beforeActionList属性可以指定某个方法为其他方法的前置操作&#xff0c;数组键名为需要调用的前置方法名&#xff0c;无值的话为当前控制器下所有方法的前置方法。[except > 方法名,方法名]表示这些…

Saving James Bond - Easy Version 原创 2017年11月23日 13:07:33

06-图2 Saving James Bond - Easy Version&#xff08;25 分&#xff09; This time let us consider the situation in the movie "Live and Let Die" in which James Bond, the worlds most famous spy, was captured by a group of drug dealers. He was sent to …

commit是直接提交到远程吗 svn_xcode 把项目代码提交到远程SVN服务器

环境 xcode 7 Mac airxcode默认支持GIT源码管理工具&#xff0c;但现在想把代码提交到已有到SVN服务器上&#xff0c;步骤如下&#xff1a;1&#xff0c;在safari中打开svn链接地址&#xff0c;信任证书&#xff0c;输入用户名密码 &#xff0c;登陆成功&#xff0c;可以在浏览…

oracle导入 表 卡住了,oracle数据库怎么导入dmp,只导入数据不导入表结构?

使用方法&#xff1a;Exp parameter_namevalue or Exp parameter_name(value1,value2……)只要输入参数helpy就可以看到所有帮助.EXP常用选项1.FULL&#xff0c;这个用于导出整个数据库&#xff0c;在ROWSN一起使用时&#xff0c;可以导出整个数据库的结构。例如&#xff1a;ex…

【bzoj3991】[SDOI2015]寻宝游戏 树链的并+STL-set

题目描述 给出一棵树&#xff0c;初始每个点都是非必经的。多次改变某个点的必经状态&#xff0c;并询问从任意一个点出发&#xff0c;经过所有必经的点并回到该点的最小路程。 输入 第一行&#xff0c;两个整数N、M&#xff0c;其中M为宝物的变动次数。 接下来的N-1行&#xf…

vue 引入json地图_VUE中通过Echarts引入地图

渲染的方法如下 记得引入echartsimport echarts from echarts-----------------------------------init(dalian){this.$nextTick(()>{var myChart this.$echarts.init(document.getElementById(echartMap));echarts.registerMap(dalian, dalian,{});myChart.setOption({ser…

Django---admin

Django内置admin 1.配置路由 urlpatterns [url(r^admin/, admin.site.urls),] 2.定制admin 在admin.py中只需要讲Mode中的某个类注册&#xff0c;即可在Admin中实现增删改查的功能&#xff0c;如&#xff1a; admin.site.register(models.UserInfo) 但是&#xff0c;这种方式比…