题目传送门

评分:省选/NOI-,难度:普及+/提高

这题真的和RMQ没有半点关系,只需要一个裸的线段树,连pushdown都不需要,只需要两种操作:区间修改和区间求最小值,在回溯时加上标记即可,唯一有点思维含量的是对环的处理,如果左端点大于了右端点,就维护(l,n)(1,r),否则正常维护即可,不知道线段树怎么打的可以看我的博客:线段树

下面给出参考代码:

 #include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
struct node
{
long long l,r,w,tag;
}tree[];
long long n,m,q,x,y,k,ans;
void build(long long l,long long r,long long k)
{
tree[k].l=l;tree[k].r=r;
if(l==r)
{
scanf("%lld",&tree[k].w);
return;
}
long long mid=(l+r)/;
build(l,mid,k*);
build(mid+,r,k*+);
tree[k].w=min(tree[k*].w,tree[k*+].w);
}
void add(long long k,long long w,long long ll,long long rr)
{
long long l=tree[k].l,r=tree[k].r;
if(l>=ll&&r<=rr)
{
tree[k].tag+=w;
return;
}
//cout<<k<<" "<<l<<" "<<r<<endl;
long long mid=(l+r)/;
//cout<<x<<" "<<y<<endl;
if(ll<=mid)add(k*,w,ll,rr);
if(rr>mid)add(k*+,w,ll,rr);
tree[k].w=min(tree[k*].w+tree[k*].tag,tree[k*+].w+tree[k*+].tag);
return;
}
long long query(long long k,long long ll,long long rr)
{
if(tree[k].l>=ll&&tree[k].r<=rr)
{
return tree[k].w+tree[k].tag;
}
if(tree[k].l>rr||tree[k].r<ll)
{
return ;
}
long long mid=(tree[k].l+tree[k].r)/,lc,rc;
lc=query(k*,ll,rr);
rc=query(k*+,ll,rr);
return min(lc,rc)+tree[k].tag;
}
int main()
{
cin>>n;
build(,n,);
cin>>m;
for(long long i=;i<=m;i++)
{
cin>>x>>y;
x++;y++;
char c=getchar();
if(c=='\n')
{
//4 1
ans=;
if(x>y)cout<<min(query(,x,n),query(,,y));
else cout<<query(,x,y);
cout<<endl;
}
else
{
cin>>q;
if(x>y)add(,q,x,n),add(,q,,y);
else add(,q,x,y);
}
}
return ;
}

[CodeForces 52C]Circular RMQ的更多相关文章

  1. CodeForces 52C Circular RMQ(间隔周期段树,间隔更新,间隔总和)

    转载请注明出处:http://blog.csdn.net/u012860063 题目链接:http://codeforces.com/problemset/problem/52/C You are g ...

  2. CodeForces 52C Circular RMQ (线段树)

    线段树区间更新维护最小值...记得下放标记... 如果线段树上的一个完整区间被修改,那么最小值和最大值增加相应的值后不变, 会改变是因为一部分改变而另外一部分没有改变所以维护一下就好. 询问的时候也要 ...

  3. codeforces 803G Periodic RMQ Problem

    codeforces 803G Periodic RMQ Problem 题意 长度为\(1e5\)的数组复制\(1e4\)次,对新的数组进行区间覆盖和区间最小值查询两种操作,操作次数\(1e5\). ...

  4. 「CF52C」Circular RMQ

    更好的阅读体验 Portal Portal1: Codeforces Portal2: Luogu Description You are given circular array \(a_0, a_ ...

  5. CF#52 C Circular RMQ (线段树区间更新)

    Description You are given circular array a0, a1, ..., an - 1. There are two types of operations with ...

  6. Codeforces 803G Periodic RMQ Problem 线段树

    Periodic RMQ Problem 动态开点线段树直接搞, 我把它分成两部分, 一部分是原来树上的, 一部分是后来染上去的,两个部分取最小值. 感觉有点难写.. #include<bits ...

  7. 【CF52C】Circular RMQ(线段树区间加减,区间最值)

    给定一个循环数组a0, a1, a2, …, an-1,现在对他们有两个操作: Inc(le, ri, v):表示区间[le, ri]范围的数值增加v Rmq(le, ri):表示询问区间[le, r ...

  8. codeforces 873E(枚举+rmq)

    题意 有n(n<=3000)个人参与acm比赛,每个人都有一个解题数,现在要决定拿金牌的人数cnt1,拿银牌的人数cnt2,拿铜牌的人数cnt3,各自对应一个解题数区间[d1,c1],[d2,c ...

  9. Codeforces 803G Periodic RMQ Problem ST表+动态开节点线段树

    思路: (我也不知道这是不是正解) ST表预处理出来原数列的两点之间的min 再搞一个动态开节点线段树 节点记录ans 和标记 lazy=-1 当前节点的ans可用  lazy=0 没被覆盖过 els ...

随机推荐

  1. 快速禁止Chrome浏览器缓存

    在前端的开发中,最麻烦的莫过于浏览器的缓存,经常需要清理缓存文件,导致开发效率较低. 但Chrome可以一键禁止浏览器缓存,并且在后续的操作中,无论相同的资源请求多少次,都不会缓存到本地,一起来体验下 ...

  2. linux NFS 客户端的安装

    1. 安装 showmount [root@allentuns ~]# yum -y install showmount 2. 查看服务器共享 [root@allentuns ~]# showmoun ...

  3. linux--基础知识4

    #当前已什么用户登陆,创建的目录或文件,他的属组和主就是谁 #用户对目录拥有的几种权限 # ll -d查看目录当前权限信息 #r:可以查看该目录下的子文件名,子目录 #w:可以在该目录下创建,删除,重 ...

  4. alert(1) to win 3

    function escape(s) { s = JSON.stringify(s); return '<script>console.log(' + s + ');</script ...

  5. PCB项目 X1 STC12C5A60S2-LQPF48

    单片机控制系统双层板STC51 简介: STC12C5A60S2主芯片,12MHz主频 12V电源输入,12/5/3V电源输出 4路0~12V可调10位ADC输入 4路1A大电流达林顿输出 4路INT ...

  6. sys模块 json pickle模块

    # sys模块# import sys# sys.path# sys.argv# sys.exit() # 脚本退出# print('[%s]'%('#'*1))# print('[%s]'%('#' ...

  7. ELK Stack

    原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11488404.html ELK workflow log -> filebeat -> l ...

  8. maven 几个命令的用法

    进入到项目目 前 cd E:\workspace\foen_api(如切换不了目录) 直接E:\workspace\foen_api mvn clean 清理 mvn install 安装 mvn t ...

  9. AOP说明

    小程序的开发者或者服务商会提供一些lib库,用来代理小程序的生命周期或API等,进而想要进行一些通用逻辑的处理(例如: 打点/事件触发/统一登录等等通用逻辑). 通常,小程序开发者们使用这些扩展包时, ...

  10. 编辑器直接word直接上传word里的图片

    tinymce是很优秀的一款富文本编辑器,可以去官网下载.https://www.tiny.cloud 这里分享的是它官网的一个收费插件powerpaste的旧版本源码,但也不影响功能使用. http ...