【vijos】P1659 河蟹王国
【算法】线段树
【题解】区间加上同一个数+区间查询最大值。注意和谐值可以是负数,初始化ans为负无穷大。
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=,ainf=-0x3f3f3f3f;
struct treess{int l,r,ms,delta;}t[maxn*];
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)>>;
build(k<<,l,mid);
build(k<<|,mid+,r);
t[k].ms=max(t[k<<].ms,t[k<<|].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)>>;
if(l<=mid)update(k<<,l,r,x);
if(r>mid)update(k<<|,l,r,x);
t[k].ms=max(t[k<<].ms+t[k<<].delta,t[k<<|].ms+t[k<<|].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<<].delta+=t[k].delta;
t[k<<|].delta+=t[k].delta;
t[k].delta=;
int mid=(left+right)>>;
if(l<=mid)ans=ask(k<<,l,r);
if(r>mid)ans=max(ans,ask(k<<|,l,r));
}
return ans;
}
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)scanf("%d",&a[i]);
build(,,n);
scanf("%d",&m);
int l,r,c,k;
for(int i=;i<=m;i++)
{
scanf("%d",&k);
if(k==)
{
scanf("%d%d%d",&l,&r,&c);
update(,l,r,c);
}
else
{
scanf("%d%d",&l,&r);
printf("%d\n",ask(,l,r));
}
}
return ;
}
【vijos】P1659 河蟹王国的更多相关文章
- vijos 1659 河蟹王国 线段树区间加、区间查询最大值
河蟹王国 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 https://vijos.org/p/1659 Description 河蟹王国有一位河蟹国王,他 ...
- [Vijos] 河蟹王国
描述 河蟹王国有一位河蟹国王,他的名字叫羊驼.河蟹王国富饶安定,人们和谐相处.有一天,羊驼国王心血来潮,想在一部分人中挑出最和谐的人.于是,羊驼国王将他的子民排成了一列(==!!b汗~好长呀).每个人 ...
- 【vijos1659】河蟹王国 线段树<区间修改+区间最大值>
描述 河蟹王国有一位河蟹国王,他的名字叫羊驼.河蟹王国富饶安定,人们和谐相处.有一天,羊驼国王心血来潮,想在一部分人中挑出最和谐的人.于是,羊驼国王将他的子民排成了一列(==!!b汗~好长呀).每个人 ...
- 【转】组件化的Web王国
本文由 埃姆杰 翻译.未经许可,禁止转载!英文出处:Future Insights. 内容提要 使用许多独立组件构建应用程序的想法并不新鲜.Web Component的出现,是重新回顾基于组件的应用程 ...
- 【BZOJ 1061】【Vijos 1825】【NOI 2008】志愿者招募
http://www.lydsy.com/JudgeOnline/problem.php?id=1061 https://vijos.org/p/1825 直接上姜爷论文... #include< ...
- vijos P1915 解方程 加强版
背景 B酱为NOIP 2014出了一道有趣的题目, 可是在NOIP现场, B酱发现数据规模给错了, 他很伤心, 哭得很可怜..... 为了安慰可怜的B酱, vijos刻意挂出来了真实的题目! 描述 已 ...
- vijos P1780 【NOIP2012】 开车旅行
描述 小\(A\)和小\(B\)决定利用假期外出旅行,他们将想去的城市从\(1\)到\(N\)编号,且编号较小的城市在编号较大的城市的西边,已知各个城市的海拔高度互不相同,记城市\(i\)的海拔高度为 ...
- 【BZOJ 2541】【Vijos 1366】【CTSC 2000】冰原探险
http://www.lydsy.com/JudgeOnline/problem.php?id=2541 https://vijos.org/p/1366 loli秘制大爆搜_(:з」∠)_坑了好久啊 ...
- 【BZOJ 1065】【Vijos 1826】【NOI 2008】奥运物流
http://www.lydsy.com/JudgeOnline/problem.php?id=1065 https://vijos.org/p/1826 好难的题啊TWT ∈我这辈子也想不出来系列~ ...
随机推荐
- 详解实现Android中实现View滑动的几种方式
注: 本文提到的所有三种滑动方式的完整demo:ScrollDemo 1. 关于View我们需要知道的 (1)什么是View? Android中的View类是所有UI控件的基类(Base class) ...
- XML 反序列化成对象,绑定到CheckBoxList控件
1.前台 <div class="control-group"> <label class="control-label"> 导航名称: ...
- C# WebBrowser控件详解
作者:827969653 0.常用方法 Navigate(string urlString):浏览urlString表示的网址 Navigate(System.Uri url):浏览url表 ...
- LINUX硬件查看命令
1.查看系统PCI设备 lspci lspci -v 显示更详细的PCI设备信息 2.查看CPU信息 more / proc /cpuinfo 3.查看系统内存信息 more /proc /mem ...
- cacti 添加redis监控(远程服务器)
监控主机 192.168.24.69 ,以下用A表示 被监控主机 192.168.24.79,以下用B标识 记得在A服务器的cacti中导入监控mysql的templates文件 拷贝ss_get ...
- matlab中滤波函数
matlab自带滤波器函数小结(图像处理) 1 线性平滑滤波器 用MATLAB实现领域平均法抑制噪声程序: I=imread(' c4.jpg '); subplot(231) imshow(I) ...
- cmd批处理中set /a和set /p的区别介绍
在 SET 命令中添加了两个新命令行开关: SET /A expression SET /P variable=[promptString]/p 是让你输入/a 是指定一个变量等于一串运算字符 什么参 ...
- POJ2286:The Rotation Game——题解
http://poj.org/problem?id=2286 题目大意:如图所示有一种玩具,每次可以拉动A-H的开关使得整个行(或列)向字母方向移动一位(如果移动到头的话则到行(列)尾部) 求使得中间 ...
- BZOJ3673 & BZOJ3674 & 洛谷3402:可持久化并查集——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=3673 https://www.lydsy.com/JudgeOnline/problem.php? ...
- 【DP】【P1941】【NOIP2014D1T3】飞扬的小鸟
传送门 Description Flappy Bird是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了水管 ...