[Tjoi2016&Heoi2016]排序[01序列]
4552: [Tjoi2016&Heoi2016]排序
Time Limit: 60 Sec Memory Limit: 256 MB
Submit: 994 Solved: 546
[Submit][Status][Discuss]
Description
Input
Output
输出数据仅有一行,一个整数,表示按照顺序将全部的部分排序结束后第q位置上的数字。
Sample Input
1 6 2 5 3 4
0 1 4
1 3 6
0 2 4
3
Sample Output
HINT
Source
#include<cstdio>
#include<cstring>
#define lch k<<1
#define rch k<<1|1
using namespace std;
const int N=1e5+,M=N<<;
int n,m,p,a[N],q[N][];
int sum[M],tag[M];
inline void opera(int k,int sz,int v){
sum[k]=sz*v;
}
inline void pushdown(int k,int l,int r){
if(~tag[k]){
int mid=(l+r)>>;
tag[lch]=tag[k];opera(lch,mid-l+,tag[k]);
tag[rch]=tag[k];opera(rch,r-mid,tag[k]);
tag[k]=-;
}
}
void change(int k,int l,int r,int x,int y,int v){
if(x>y) return ;
if(l==x&&r==y){
opera(k,r-l+,v);
tag[k]=v;
return ;
}
pushdown(k,l,r);
int mid=(l+r)>>;
if(y<=mid) change(lch,l,mid,x,y,v);
else if(x>mid) change(rch,mid+,r,x,y,v);
else change(lch,l,mid,x,mid,v),change(rch,mid+,r,mid+,y,v);
sum[k]=sum[lch]+sum[rch];
}
int query(int k,int l,int r,int x,int y){
if(l==x&&r==y) return sum[k];
pushdown(k,l,r);
int mid=(l+r)>>;
if(y<=mid) return query(lch,l,mid,x,y);
else if(x>mid) return query(rch,mid+,r,x,y);
else return query(lch,l,mid,x,mid)+query(rch,mid+,r,mid+,y);
}
inline int work(int now){
memset(sum,,sizeof sum);
memset(tag,-,sizeof tag);
for(int i=;i<=n;i++) change(,,n,i,i,a[i]>=now);
for(int i=,t;i<=m;i++){
t=query(,,n,q[i][],q[i][]);
if(!q[i][]){
change(,,n,q[i][],q[i][]-t,);
change(,,n,q[i][]-t+,q[i][],);
}
else{
change(,,n,q[i][],q[i][]+t-,);
change(,,n,q[i][]+t,q[i][],);
}
}
return query(,,n,p,p);
}
int main(){
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++) scanf("%d",&a[i]);
for(int i=;i<=m;i++) scanf("%d%d%d",&q[i][],&q[i][],&q[i][]);
scanf("%d",&p);
int l=,r=n,mid,ans;
while(l<=r){
mid=(l+r)>>;
if(work(mid)) l=mid+,ans=mid;
else r=mid-;
}
printf("%d\n",ans);
return ;
}
[Tjoi2016&Heoi2016]排序[01序列]的更多相关文章
- BZOJ 4552: [Tjoi2016&Heoi2016]排序
4552: [Tjoi2016&Heoi2016]排序 Time Limit: 60 Sec Memory Limit: 256 MBSubmit: 579 Solved: 322[Sub ...
- bzoj千题计划128:bzoj4552: [Tjoi2016&Heoi2016]排序
http://www.lydsy.com/JudgeOnline/problem.php?id=4552 二分答案 把>=mid 的数看做1,<mid 的数看做0 这样升序.降序排列相当于 ...
- 【BZOJ4552】[Tjoi2016&Heoi2016]排序 二分+线段树
[BZOJ4552][Tjoi2016&Heoi2016]排序 Description 在2016年,佳媛姐姐喜欢上了数字序列.因而他经常研究关于序列的一些奇奇怪怪的问题,现在他在研究一个难题 ...
- 4552: [Tjoi2016&Heoi2016]排序
4552: [Tjoi2016&Heoi2016]排序 链接 分析: 因为只询问一次,所以考虑二分这个数.显然是没有单调性的,但是我们可以二分所有大于等于mid的数中,是否有满足条件的x(而不 ...
- BZOJ4552: [Tjoi2016&Heoi2016]排序
Description 在2016年,佳媛姐姐喜欢上了数字序列.因而他经常研究关于序列的一些奇奇怪怪的问题,现在他在研究一个难题 ,需要你来帮助他.这个难题是这样子的:给出一个1到n的全排列,现在对这 ...
- BZOJ 4552 [Tjoi2016&Heoi2016]排序 | 二分答案 线段树
题目链接 题面 题目描述 在2016年,佳媛姐姐喜欢上了数字序列.因而他经常研究关于序列的一些奇奇怪怪的问题,现在他在研究一个难题,需要你来帮助他.这个难题是这样子的:给出一个1到n的全排列,现在对这 ...
- [BZOJ4552][TJOI2016&&HEOI2016]排序(二分答案+线段树/线段树分裂与合并)
解法一:二分答案+线段树 首先我们知道,对于一个01序列排序,用线段树维护的话可以做到单次排序复杂度仅为log级别. 这道题只有一个询问,所以离线没有意义,而一个询问让我们很自然的想到二分答案.先二分 ...
- [TJOI2016][HEOI2016]排序
题目大意: 给定一个$1\sim n(n\leq10^5)$的全排列,有$m(m\leq10^5)$次操作,每次把区间$[l,r]$按照升序或降序排序.最后询问所有操作完成后,位置为$q$的数是多少. ...
- BZOJ 4552 [Tjoi2016&Heoi2016]排序 ——线段树 二分答案
听说是BC原题. 好题,二分答案变成01序列,就可以方便的用线段树维护了. 然后就是区间查询和覆盖了. #include <map> #include <cmath> #inc ...
随机推荐
- utf8 ucs4
这个问题不好回答,首先UTF-8编码只不过是一种Unicode的转换,兼容ASCII.所以,UTF-8编码支持的最大字符编码应该是Unicode支持的最大字符编码. 理论上,UTF-8编码可以支持最大 ...
- [Learn AF3]第六章 App Framework 3.0中的内置矢量图标
AF3的内置矢量图标 介绍:要使用af3中的图标,必须首先引入icon.css,由于文件中已经内置了字体文件数据,因此不需要引入字体文件支持. <link rel="styleshee ...
- centos7 Minimal安装没有ifconfig
centos7 Minimal 安装后 ip addr 系统的网卡没有分配IP地址 网卡为ens33 cd /etc/sysconfig/network-scripts vi ifcfg-ens33 ...
- notepad++ 文本替换功能,解决excel批量修改数据库的数据操作
^ \(' 开始\t ',' 制表符$ '\) 行末 复制出来之后,使用文本替换功能,转换为SQL,添加到临时表中.然后多表关联修改. SELECT COUNT(*) FROM orderno; # ...
- HQS——Half Quadratic Splitting半二次方分裂
变量分裂法 变量分裂法(Variable Splitting),解决目标函数是两个函数之和的优化问题. 1)其中g是n维向量到d维向量的一个映射. 变量分裂将上式变为: 问题(2)可能比(1)更容易或 ...
- symfony 事务提交
1. 添加数据 新建一个对象,给对象赋值 $em = $this->getDoctrine()->getManager(); //添加事物 $em->getConnection()- ...
- python中是否有单独的字符类型,通过下标的方式表示字符串中的字符
说明: 在python中,没有单独的字符类型,一个字符呢就是一个大小为1的字符串. 并且可以通过下标的方式,表示字符串中的字符. 操作过程: 1.通过[ ]的方式表示字符串中的第几个字符 >&g ...
- Go中error类型的nil值和nil
https://my.oschina.net/chai2010/blog/117923
- Java -- 获取MAC地址
啦啦啦 package com.xindatai.common.util; import java.io.InputStream; import java.util.regex.Matcher; im ...
- 【AI】Win10-Tensorflow
一.安装 第一步:先安装anaconda3第二步:pip install --upgrade --ignore-installed tensorflow或者:pip install tensorflo ...