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. (二)Redis字符串String操作

    String全部命令如下: set key value # 设置一个key的value值 get key # 获取key的value值 mset key1 value1 key2 value2 ... ...

  2. 【刷题】SPOJ 705 SUBST1 - New Distinct Substrings

    Given a string, we need to find the total number of its distinct substrings. Input T- number of test ...

  3. [洛谷P2921][USACO08DEC]在农场万圣节Trick or Treat on the Farm

    题目大意:给你一张有向图,每个点最多一条出边,问从每个开始,走多少步会到一个已经过的点 题解:$tarjan$缩点,然后建反图$DP$ 卡点:无 C++ Code: #include <cstd ...

  4. [NOIP2012]疫情控制 贪心 二分

    题面:[NOIP2012]疫情控制 题解: 大体思路很好想,但是有个细节很难想QAQ 首先要求最大时间最小,这种一般都是二分,于是我们二分一个时间,得到一个log. 然后发现一个军队,越往上走肯定可以 ...

  5. [NOI2009]管道取珠 DP + 递推

    ---题面--- 思路: 主要难点在思路的转化, 不能看见要求$\sum{a[i]^2}$就想着求a[i], 我们可以对其进行某种意义上的拆分,即a[i]实际上可以代表什么? 假设我们现在有两种取出某 ...

  6. 51NOD 1565:模糊搜索——题解

    http://www.51nod.com/onlineJudge/questionCode.html#problemId=1565&noticeId=445588 有两个基因串S和T,他们只包 ...

  7. BZOJ1492: [NOI2007]货币兑换Cash 【dp + CDQ分治】

    1492: [NOI2007]货币兑换Cash Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 5391  Solved: 2181 [Submit][S ...

  8. Java的四种引用?用到的场景?

    在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象.也就是说,只有对象处于可触及(reachable)状态,程序才能使用它.从JDK 1.2版本开始,把对象的引用分 ...

  9. Mobile phones POJ - 1195 二维树状数组求和

    Suppose that the fourth generation mobile phone base stations in the Tampere area operate as follows ...

  10. 最新eclipse安装SVN插件

    转载自:http://welcome66.iteye.com/blog/1845176 eclipse里安装SVN插件,一般来说,有两种方式: 直接下载SVN插件,将其解压到eclipse的对应目录里 ...