题目传送门

评分:省选/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. Sql Server 2008安装时提示重启计算机失败解决办法

    在键盘上按下组合键[Win]+[R],调出运行窗口.   在窗口中输入“regedit”,点击确定,打开注册表管理界面.   在注册表左侧目录栏中找到如下位置:“HKEY_LOCAL_MACHINE\ ...

  2. Tomcat支持SSL加密网站

    配置Tomcat,以支持SSL对网站加密,关键性配置如下: 思路:在tomcat服务器web1上做相应配置->客户端测试. 1.创建加密用的私钥和证书文件 [root@web1 ~]# keyt ...

  3. [BJWC2010]严格次小生成树(LCA,最小生成树)

    [BJWC2010]严格次小生成树 题目描述 小C最近学了很多最小生成树的算法,Prim算法.Kurskal算法.消圈算法等等.正当小C洋洋得意之时,小P又来泼小C冷水了.小P说,让小C求出一个无向图 ...

  4. pandas 新增数据列(直接赋值、apply,assign、分条件赋值)

    # pandas新增数据列(直接赋值.apply.assign.分条件赋值) # pandas在进行数据分析时,经常需要按照一定条件创建新的数据列,然后进行进一步分析 # 1 直接赋值 # 2 df. ...

  5. AOP技术介绍--(引言)

    软件设计因为引入面向对象思想而逐渐变得丰富起来.“一切皆为对象”的精义,使得程序世界所要处理的逻辑简化,开发者可以用一组对象以及这些对象之间的关系将软件系统形象地表示出来.而从对象的定义,进而到模块, ...

  6. 使用Github 当作自己个人博客的图床

    使用Github 当作自己个人博客的图床 前提 本文前提: 我个人博客的草稿是存放在 github上的一个仓库 diarynote 截图存放的图片或者需要放在文章中图片,会固定存放在对应的文件夹中,我 ...

  7. super语句不必须放在方法第一行。

    class A(object): pass class B(A): def __init__(self): self.__a = "B#a" super(B, self).__in ...

  8. Python---基础---list(列表)

    2019-05-20 一. # append()  向列表末尾追加新元素   返回值Nonelist1 = [1,2,3,4,5]print(id(list1))list1.append(6)prin ...

  9. 20180708-Java基本数据类型

    public class PrimitiveTypeTest{ public static void main(String[] args){ //byte System.out.println(&q ...

  10. ORA-01578: ORACLE 数据块损坏 (文件号 10, 块号 57896)ORA-01110: 数据文件 10: '/data/oradata/prod35.dbf'

    https://community.oracle.com/thread/3540795 概述 ------------- 数据库坏块(corruption) 的类型可以按照坏块所属对象的不同,分为用户 ...