Description

河蟹王国有一位河蟹国王,他的名字叫羊驼。河蟹王国富饶安定,人们和谐相处。有一天,羊驼国王心血来潮,想在一部分人中挑出最和谐的人。于是,羊驼国王将他的子民排成了一列(==!!b汗~好长呀)。每个人都有一个初始的和谐值。羊驼国王每次会选择一个区间[L,R],这个区间中和谐值最大的人就是国王选出的人。而且,在某一时间,区间[L',R']里的人会变得熟悉,因此他们每个人的和谐值都会上升一个相同的值C。羊驼国王想知道,对于每一次选择,他选出的最大和谐值是多少。

Input

第一行是一个数N(1<=N<=100000),表示人数。

接下来的N行,每行一个数,表示排成的序列第i个人和谐值的初始值。

接下来是一个数M(1<=M<=100000),表示羊驼国王或他的子民有所活动(羊驼国王选择一个区间算一次,某区间里的人增长和谐值算一次)的总次数。

接下来的M行,每行第一个是一个数K,K是1或2,若K=1,接下来有三个数L,R,C,表示区间[L,R]的所有人增加C的和谐值;若K=2,接下来有两个数L,R,表示国王选择了区间[L,R]。

Output

每次对于国王选择区间,输出选择区间里的最大和谐值。

Sample Input

5
1
2
3
4
5
3
2 1 4
1 1 3 3
2 3 5

Sample Output

4
6

HINT

每个测试点1s。

保证所有的数以及结果都在longint范围内。

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=100010;
int cnt=0;
int a[maxn];
struct treetype{int lptr,rptr;int Left,Right;int mx,bj; //区间最大值
}t[2*maxn];void buildtree(int ll,int rr){int cur=++cnt;t[cur].Left=ll; t[cur].Right=rr;if (ll!=rr-1){t[cur].lptr=cnt+1; buildtree(ll,(ll+rr)/2);t[cur].rptr=cnt+1; buildtree((ll+rr)/2,rr);t[cur].mx=max(t[t[cur].lptr].mx,t[t[cur].rptr].mx);t[cur].bj=0;}else{t[cur].mx=a[ll]; t[cur].bj=0;}
}
void update(int k){if (t[k].Right-1 != t[k].Left){t[t[k].lptr].mx+=t[k].bj; t[t[k].rptr].mx+=t[k].bj;t[t[k].lptr].bj+=t[k].bj; t[t[k].rptr].bj+=t[k].bj;}t[k].bj=0;
}
void change(int k,int ll,int rr,int delta){if (t[k].bj) update(k);if (ll<=t[k].Left && rr>=t[k].Right){t[k].mx+=delta;t[k].bj+=delta;}else{if (ll<(t[k].Left+t[k].Right)/2) change(t[k].lptr,ll,rr,delta);if (rr>(t[k].Left+t[k].Right)/2) change(t[k].rptr,ll,rr,delta);t[k].mx=max(t[t[k].lptr].mx,t[t[k].rptr].mx); //↑更新
    }
}
int query(int k,int ll,int rr){if (t[k].bj) update(k);if(ll<=t[k].Left && rr>=t[k].Right) return t[k].mx;int ans=-10000000; //有负数 if (ll<(t[k].Left+t[k].Right)/2) ans=query(t[k].lptr,ll,rr);if (rr>(t[k].Left+t[k].Right)/2) ans=max(ans,query(t[k].rptr,ll,rr));return ans;
}
int main(){int n,m,type,lf,rt,del;scanf("%d",&n);for (int i=1;i<=n;i++) scanf("%d",&a[i]);scanf("%d",&m);buildtree(1,n+1);int i=1;for (i=1;i<=m;i++){scanf("%d",&type);if (type==1){scanf("%d%d%d",&lf,&rt,&del);change(1,lf,rt+1,del);}else{scanf("%d%d",&lf,&rt);printf("%d\n",query(1,lf,rt+1));}}return 0;
}

转载于:https://www.cnblogs.com/liumengyue/p/5128391.html

【Vijos1659】河蟹王国相关推荐

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

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

  2. 【vijos】P1659 河蟹王国

    [算法]线段树 [题解]区间加上同一个数+区间查询最大值.注意和谐值可以是负数,初始化ans为负无穷大. #include<cstdio> #include<algorithm> ...

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

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

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

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

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

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

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

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

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

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

  8. [THUWC2017]在美妙的数学王国中畅游

    [THUWC2017]在美妙的数学王国中畅游 e和sin信息不能直接合并 泰勒展开,大于21次太小,认为是0,保留前21次多项式即可 然后就把e,sin ,kx+b都变成多项式了,pushup合并 上 ...

  9. BZOJ5020: [THUWC 2017]在美妙的数学王国中畅游

    BZOJ5020: [THUWC 2017]在美妙的数学王国中畅游 其实题面好像有点不全,建议去洛谷: P4546 [THUWC2017]在美妙的数学王国中畅游 这里还是$BZOJ$的题面. Desc ...

  10. 计算机学院大学生程序设计竞赛(2015’11)1007 油菜花王国

    1007 油菜花王国 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Probl ...

最新文章

  1. ubuntu nohup php,Ubuntu安装PhpStorm并设置快速启动phpstorm
  2. python 内存中的文件操作 StringIO cStringIO 简介
  3. MySQL浮点数和定点数类型
  4. cacti 整合nagios,以及总是off处理办法!
  5. [Qt教程] 第25篇 数据库(五)SQL表格模型QSqlTableModel
  6. 给定数字的全部组合实现方式
  7. libvirt/qemu特性之快照
  8. 一年月份大小月口诀_家乡山溪长的菖蒲种植有讲究,记住“口诀”事半功倍
  9. 转反射的第一部分:发现和执行
  10. 关于Android的ImageView置顶
  11. 反向题在测试问卷信效度_问卷一定要做信度效度检验吗?如果含有多选题怎样做信度分析,请各位高手帮帮忙。...
  12. 率土之滨服务器维修,率土之滨征服赛季合服与转服功能详解
  13. 读《把时间当作朋友:运用心智获得解放》
  14. AI - Intelligent Agents
  15. 保时捷上海车展阵容公布:新款Cayenne全球首秀
  16. 如何给SCI收录的文章分区?
  17. 五种常见的聚类算法总结
  18. 三维视觉 | 03 MATLAB 单、双目相机标定
  19. 阿里云+VMware会擦出怎样的火花?
  20. ChatGPT自动写了个AI办公office word插件,低配copilot,程序员看了焦虑。

热门文章

  1. Python之协程、异步IO、redis缓存、rabbitMQ队列
  2. layui中弹出层的两种表达方式
  3. servlet以及HTML中路径问题
  4. $科大讯飞开放平台——语音听写接口的使用
  5. UVa 621 - Secret Research
  6. SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder”
  7. 一步步完成FastDFS + Spring MVC上传下载整合示例
  8. Java 基础【01】 This 用法
  9. php学习第一讲----php是什么?
  10. 设置OWA重定向URL