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. BZOJ 1037 生日聚会(神DP)

    这题的DP很难想,定义dp[i][j][a][b]表示用了i个男生,j个女生,任一连续的后缀区间内,男生比女生最多多a人,女生比男生最多多b人. 转移就是显然了. # include <cstd ...

  2. NetScaler Best Practice With VMAC In A High Availability Configuration

    NetScaler Best Practice With VMAC In A High Availability Configuration https://www.citrix.com/blogs/ ...

  3. BZOJ2152:聪聪可可——题解

    http://www.lydsy.com/JudgeOnline/problem.php?id=2152 Description 聪聪和可可是兄弟俩,他们俩经常为了一些琐事打起来,例如家中只剩下最后一 ...

  4. bzoj1045: [HAOI2008] 糖果传递(思维题)

    首先每个人一定分到的糖果都是所有糖果的平均数ave. 设第i个人给i-1个人Xi个糖果,则有Ai-Xi+X(i+1)=ave. 则A1-X1+X2=ave,A2-X2+X3=ave,A3-X3+X4= ...

  5. 四道JavaScript面试题检测你的js基本功

    下面有四道简短的JavaScript小脚本,如果你能顺利预测脚本的运行结果,那么你的JavaScript基本功还是可以的.如果答错了,可以相应地去补一下缺漏的知识.反正也很简单,答错了只是说明你没了解 ...

  6. Spring源码解析-Web容器启动过程

    Web容器启动过程,主要讲解Servlet和Spring容器结合的内容. 流程图如下: Web容器启动的Root Context是有ContextLoaderListener,一般使用spring,都 ...

  7. Linux下 ps -ef 和 ps aux 的区别及格式详解

    原文:https://www.cnblogs.com/5201351/p/4206461.html Linux下ps -ef和ps aux的区别及格式详解 Linux下显示系统进程的命令ps,最常用的 ...

  8. CentOS 6.5 下 QT4 连接 mysql 数据库的步骤

    QT4 的安装请参考: CentOS 6.5 下安装 QT 4 mysql 的安装请参考: CentOS 6.5 下安装配置 mysql 1. 预防万一,先安装一下mysql-devel(一定要装!) ...

  9. Stars POJ - 2352

    Astronomers often examine star maps where stars are represented by points on a plane and each star h ...

  10. LightOJ 1306 - Solutions to an Equation 裸EXGCD

    本题是极其裸的EXGCD AX+BY+C=0 给你a b c 和x与y的区间范围,问你整数解有几组 作为EXGCD入门,题目比较简单 主要需要考虑区间范围的向上.向下取整,及正负符号的问题 问题是这正 ...