【算法】线段树

【题解】区间加上同一个数+区间查询最大值。注意和谐值可以是负数,初始化ans为负无穷大。

#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=100010,ainf=-0x3f3f3f3f;
struct treess{int l,r,ms,delta;}t[maxn*3];
int a[maxn],n,m;
void build(int k,int l,int r)
{t[k].l=l;t[k].r=r;if(l==r)t[k].ms=a[l];else{int mid=(l+r)>>1;build(k<<1,l,mid);build(k<<1|1,mid+1,r);t[k].ms=max(t[k<<1].ms,t[k<<1|1].ms);}
}
void update(int k,int l,int r,int x)
{int left=t[k].l,right=t[k].r;if(l<=left&&right<=r)t[k].delta+=x;else{int mid=(left+right)>>1;if(l<=mid)update(k<<1,l,r,x);if(r>mid)update(k<<1|1,l,r,x);t[k].ms=max(t[k<<1].ms+t[k<<1].delta,t[k<<1|1].ms+t[k<<1|1].delta);}
}
int ask(int k,int l,int r)
{int left=t[k].l,right=t[k].r,ans=ainf;if(l<=left&&right<=r)ans=t[k].ms+t[k].delta;else{t[k].ms+=t[k].delta;t[k<<1].delta+=t[k].delta;t[k<<1|1].delta+=t[k].delta;t[k].delta=0;int mid=(left+right)>>1;if(l<=mid)ans=ask(k<<1,l,r);if(r>mid)ans=max(ans,ask(k<<1|1,l,r));}return ans;
}
int main()
{scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d",&a[i]);build(1,1,n);scanf("%d",&m);int l,r,c,k;for(int i=1;i<=m;i++){scanf("%d",&k);if(k==1){scanf("%d%d%d",&l,&r,&c);update(1,l,r,c);}else{scanf("%d%d",&l,&r);printf("%d\n",ask(1,l,r));}}return 0;
}

View Code

转载于:https://www.cnblogs.com/onioncyc/p/5792377.html

【vijos】P1659 河蟹王国相关推荐

  1. vijos p1659——河蟹王国(线段树)(复习)

    描述 河蟹王国有一位河蟹国王,他的名字叫羊驼.河蟹王国富饶安定,人们和谐相处.有一天,羊驼国王心血来潮,想在一部分人中挑出最和谐的人.于是,羊驼国王将他的子民排成了一列(==!!b汗~好长呀).每个人 ...

  2. vijos 1006 晴天小猪历险记之Hill——数字三角形的终极变化

    题目链接:https://vijos.org/p/1006 数字三角形原题看这里:http://www.cnblogs.com/huashanqingzhu/p/7326837.html 背景 在很久 ...

  3. vijos 1476 旅游规划题解

    题目链接:https://vijos.org/p/1476 解:因为这一定是一棵树,所以我们多画几次图,就会发现所有的最长路径中心点都一样,且中心点把这条最长路径分成两段等长的路. 那么做法就很简单啦 ...

  4. java 魔法王国,游历魔法王国

    60 只要找到最长的一条路径就好,只要保证最长路径只走一次,多余的步数再去访问其他节点,就能计算能够访问的最多节点数. (1) 如果允许走的步数L小于等于最长路径,那么就直接只在最长路径上走,这样可以 ...

  5. Vijos P1848 记数问题【进制】

    描述 试计算在区间 1 到 n 的所有整数中,数字 x(0 ≤ x ≤ 9)共出现了多少次?例如,在 1 到 11 中,即在 1.2.3.4.5.6.7.8.9.10.11 中,数字 1 出现了 4 ...

  6. 虚拟摄像头 安卓版_林俊杰 ft. M.E.,联同视效大厂数字王国加码虚拟偶像

    睽违三年,林俊杰携新专<幸存者·如你>强势回归,一场「新歌首唱LIVE」在10月30日晚间如约而至.对虚拟科技情有独钟的林俊杰,从未错过每一次变身资深玩家的机会.此番线上视听盛宴的中途,一 ...

  7. 从创作工具到虚拟超现实主义,聊一聊VR的艺术王国

    今天我们就从创作与分享的角度聊一下VR的艺术王国. 阿罗想要在有月亮的晚上去外面走一走,可是天上没有月亮.于是,阿罗花了月亮和路.很快阿罗对走路失去兴趣.于是他画了一条小路和苹果树.苹果树下,阿罗画了 ...

  8. 【bzoj5020】[THUWC 2017]在美妙的数学王国中畅游 泰勒展开+LCT

    题目描述 学渣小R被大学的数学课程虐得生活不能自理,微积分的成绩曾是他在教室里上的课的最低分.然而他的某位陈姓室友却能轻松地在数学考试中得到满分.为了提升自己的数学课成绩,有一天晚上(在他睡觉的时候) ...

  9. 洛谷 P4475 巧克力王国 解题报告

    P4475 巧克力王国 题目描述 巧克力王国里的巧克力都是由牛奶和可可做成的.但是并不是每一块巧克力都受王国人民的欢迎,因为大家都不喜欢过于甜的巧克力. 对于每一块巧克力,我们设 \(x\) 和 \( ...

最新文章

  1. JQ~trigger与bind,触发与绑定何先何后?
  2. Xamarin SQLite教程数据库访问与生成
  3. Linux下常用日志分析工具
  4. 8.2.4临时表和正式表
  5. Hybris订单价格的折扣维护
  6. did双重差分法_Stata中双重差分操流程及代码
  7. 我的Wiki:使用JConsole对WildFly(或JBoss AS7)进行远程JMX访问
  8. Android开始中的OOM异常
  9. python mysql传入多个参数
  10. Windows常用运行库--VC++、DirectX、.NET
  11. java怎么判断素数_java判断是否为素数(质数)的方法
  12. qt-5.9.7-vc14h73c81de_0
  13. SQL Server各版本官方下载地址
  14. jQuery介绍及各版本介绍(适合新手查看)
  15. uni-app小程序与app端的兼容问题
  16. python期货交易_strategies/python版CTP商品期货交易类库.py at master · gzhou1024/strategies · GitHub...
  17. 一、微信小程序-快速回顾(创建项目、项目结构分析)
  18. 经纬度坐标转换成屏幕坐标
  19. riak mysql_[Translate] 从SQL数据库迁移到Riak
  20. 数据库连接的Persist Security Info参数说明

热门文章

  1. Java学习笔记31
  2. 安装搭建kafka集群
  3. Solidity字符串类型
  4. python学习之matplotlib绘制动图(FuncAnimation()参数)
  5. ARM+linux+2440嵌入式开发相关经典书籍(转)
  6. EntityFramework之原始查询及性能优化(六)
  7. LeetCode-Unique Binary Search Trees
  8. 讨论:写程序到底需不需要懂数学?
  9. Silverlight实用窍门系列:66.Silverlight的数据模板DataTemplate(二)获取数据模板控件...
  10. 智能ABC拼音输入法的“秘密”