NOI2012-超级钢琴的升级版。

用线段树维护最小值及其出现位置,接下来就跟超级钢琴一个做法了。

#include<bits/stdc++.h>
#define N 500010
#define inf 1000000007
#define fi first
#define sc second
#define lson (o<<1)
#define rson (o<<1|1)
using namespace std;
typedef long long ll;
typedef pair<int,int> pir;
inline int read(){
int f=,x=;char ch;
do{ch=getchar();if(ch=='-')f=-;}while(ch<''||ch>'');
do{x=x*+ch-'';ch=getchar();}while(ch>=''&&ch<='');
return f*x;
}
int n,a[N],l,r,k,v;
pir tmp;
struct Segment_Tree{
pir minv[N<<];int tagv[N<<];
inline void puttag(int o,int v){
tagv[o]=max(tagv[o],v);
minv[o].fi=max(minv[o].fi,v);
}
inline void pushdown(int o){
if(tagv[o]==)return;
puttag(lson,tagv[o]);puttag(rson,tagv[o]);
tagv[o]=;
}
inline void pushup(int o){minv[o]=min(minv[lson],minv[rson]);}
void change(int o,int l,int r,int ql,int qr,int v){
if(ql<=l&&r<=qr){puttag(o,v);return;}
pushdown(o);int mid=(l+r)>>;
if(ql<=mid)change(lson,l,mid,ql,qr,v);
if(qr>mid)change(rson,mid+,r,ql,qr,v);
pushup(o);
}
pir query(int o,int l,int r,int ql,int qr){
if(ql<=l&&r<=qr)return minv[o];
pushdown(o);int mid=(l+r)>>;
pir ans=make_pair(inf,);
if(ql<=mid)ans=min(ans,query(lson,l,mid,ql,qr));
if(qr>mid)ans=min(ans,query(rson,mid+,r,ql,qr));
return ans;
}
void build(int o,int l,int r){
if(l==r){minv[o]=make_pair(a[l],l);return;}
int mid=(l+r)>>;
build(lson,l,mid);build(rson,mid+,r);
pushup(o);
}
}T;
struct seg{int l,r;pir mv;};
bool operator <(seg a,seg b){return a.mv.fi>b.mv.fi;}
priority_queue<seg> Q;
int ans[N],top,q;
inline void push(int l,int r){
if(l>r)return;pir tmp=T.query(,,n,l,r);
if(tmp.fi>=k)return;
Q.push((seg){l,r,tmp});
}
int main(){
n=read();
for(int i=;i<=n;i++)a[i]=read();
T.build(,,n);
q=read();
while(q--){
int opt=read();
if(opt==){
int l=read(),r=read(),v=read();
T.change(,,n,l,r,v);
}
else{
top=;while(!Q.empty())Q.pop();
l=read(),r=read(),k=read(),v=read();
push(l,r);
while(!Q.empty()){
seg tmp=Q.top();Q.pop();
ans[++top]=tmp.mv.fi;
push(tmp.l,tmp.mv.sc-);push(tmp.mv.sc+,tmp.r);
if(--v==)break;
}
if(v==){
sort(ans+,ans+top+);
for(int i=;i<=top;i++)printf("%d ",ans[i]);puts("");
}
else puts("-1");
}
}
}

【LOJbeta round1】ZQC的手办的更多相关文章

  1. Loj 504 ZQC的手办

    Loj 504 ZQC的手办 用线段树维护,每个节点存储区间内最小值 \(val\) 以及最小值出现的一个位置 \(pos\) . 对操作 \(1\) ,只需打标记即可,因为我们不维护其他的信息(如区 ...

  2. LOJ504「LibreOJ β Round」ZQC 的手办

    https://loj.ac/problem/504 题解 对于区间取\(\max\),这个比较好办,直接在线段树上打标记就行了. 如果让我们弹出前\(n\)个数,我们可以用类似超级钢琴的思想,队列中 ...

  3. 「LibreOJ β Round」ZQC 的手办

    https://loj.ac/problem/504 一类套路题. 首先这个玩意可以两个logn树套树做.... naive地,把区间内的所有数拿出来放进堆里.不断取出. 太多了. 所以开始只保留那初 ...

  4. 【BZOJ 4517】【SDOI 2016 Round1 Day2 T2】排列计数

    本蒟蒻第一次没看题解A的题竟然是省选$Round1$ $Day2$ $T2$ 这道组合数学题. 考试时一开始以为是莫队,后来想到自己不会组合数的一些公式,便弃疗了去做第三题,,, 做完第三题后再回来看 ...

  5. SDOI2017 Round1

    SDOI2017 Round1 在回去的车上写的 cnblog的markdown貌似有bug,空行都没有了 Day -several [清明节] 没想到在省选之前还会有一次放假 放假前一天晚上走到校门 ...

  6. SDOI2017 Round1 简要题解

    我们 TM 怎么又要上文化课..我 哔哔哔哔哔哔 「SDOI2017」数字表格 题意 有 \(T\) 组数据,求 \[ \prod_{i = 1}^{n} \prod_{j = 1}^{m} fib[ ...

  7. 3d模型 手办制作 3d model manual production

    3d模型 手办制作 3d model manual production 作者:韩梦飞沙 Author:han_meng_fei_sha 邮箱:313134555@qq.com E-mail: 313 ...

  8. LOJ#505. 「LibreOJ β Round」ZQC 的游戏(最大流)

    题意 题目链接 Sol 首先把第一个人能吃掉的食物删掉 然后对每个人预处理出能吃到的食物,直接限流跑最大流就行了 判断一下最后的最大流是否等于重量和 注意一个非常恶心的地方是需要把除1外所有人都吃不到 ...

  9. 【ContestHunter】【弱省胡策】【Round0】(A)&【Round1】(B)

    DP+容斥原理or补集转化?/KD-Tree 唔……突然发现最早打的两场(打的最烂的两场)没有写记录……(太烂所以不忍记录了吗... 还是把搞出来了的两道题记录一下吧= =勉强算弥补一下缺憾…… Ro ...

随机推荐

  1. 响应式布局(rem布局),使用JS动态设置fontsize

    var cw = document.documentElement.clientWidth; if (cw > 1920) { cw = 1920; } document.getElements ...

  2. hdu5696区间的价值 -- 2016"百度之星" - 初赛(Astar Round2B)

    Problem Description 我们定义“区间的价值”为一段区间的最大值*最小值. 一个区间左端点在L,右端点在R,那么该区间的长度为(R−L+1). 现在聪明的杰西想要知道,对于长度为k的区 ...

  3. CF25E:Test——题解

    https://vjudge.net/problem/CodeForces-25E 题目大意:给三个字符串,求最小串,使得前三个串都是它的子串. ———————————————— 这题虽然是看哈希的时 ...

  4. CF359D:Pair of Numbers——题解

    https://vjudge.net/problem/CodeForces-359D http://codeforces.com/problemset/problem/359/D 题目大意: 给一串数 ...

  5. 20165218 2017-2018-1 《Java程序设计》第四周学习总结

    20165218 2017-2018-1 <Java程序设计>第四周学习总结 教材学习内容总结 第五章 子类与继承 子类与父类 通过关键字extands定义子类 class 子类 exta ...

  6. AOJ.综合训练.2016-11-24

    AOJ.综合训练 友情提示:不要复制粘贴,看完解析先自己尝试写一下.不行再看题解.这样才会有提高! A题 金字塔 题意分析 分别读入10个数,按照他给出的格式输出就行了.注意每有7个字符(包括空格). ...

  7. React组件通信

    1.父子通信 父 -> 子 props子 -> 父 回调函数,父组件通过props向子组件传递一个函数,子组件调用函数,父组件在回调函数中用setState改变自身状态 2.跨层级通信 1 ...

  8. GCJ2008 APAC local onsites C Millionaire

    自己Blog的第一篇文章,嗯... 接触这道题,是从<挑战程序设计竞赛>这本书看来的,其实头一遍读题解,并没有懂.当然现在已经理解了,想想当初可能是因为考虑两轮的那张概率图的问题.于是决定 ...

  9. Eclipse中 properties 文件中 中文乱码

    在.properties文件写注释时,发现中文乱码了,由于之前在idea中有见设置.properties文件的编码类型,便找了找乱码原因 在中文操作系统中,Eclipse中的Java类型文件的编码的默 ...

  10. Gaby And Addition Gym - 101466A (初学字典树)

    Gaby is a little baby who loves playing with numbers. Recently she has learned how to add 2 numbers ...