省选TM都能有BC原题?

。。。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define maxn 100500
#define inf 1000000007
using namespace std;
int n,m,a[maxn],l=inf,r=,mi,q;
int ls[maxn<<],rs[maxn<<],lazy[maxn<<],sum[maxn<<],root,tot=;
int pos[maxn],ans;
struct move
{
int type,l,r;
}p[maxn];
void build(int &now,int left,int right)
{
now=++tot;lazy[now]=-;
if (left==right)
{
pos[left]=now;
if (a[left]>=mi) {lazy[now]=;sum[now]=;}
else {lazy[now]=;sum[now]=;}
return;
}
int mid=(left+right)>>;
build(ls[now],left,mid);
build(rs[now],mid+,right);
sum[now]=sum[ls[now]]+sum[rs[now]];
}
void pushdown(int now,int left,int right)
{
if (lazy[now]==-) return;
if (left==right) return;
int mid=(left+right)>>;
if (lazy[now]==)
{
lazy[ls[now]]=;sum[ls[now]]=;
lazy[rs[now]]=;sum[rs[now]]=;
}
else
{
lazy[ls[now]]=;sum[ls[now]]=mid-left+;
lazy[rs[now]]=;sum[rs[now]]=right-mid;
}
lazy[now]=-;
}
int query(int now,int left,int right,int l,int r)
{
pushdown(now,left,right);
if ((left==l) && (right==r))
return sum[now];
int mid=(left+right)>>;
if (r<=mid) return query(ls[now],left,mid,l,r);
else if (l>=mid+) return query(rs[now],mid+,right,l,r);
else return query(ls[now],left,mid,l,mid)+query(rs[now],mid+,right,mid+,r);
}
void modify(int now,int left,int right,int l,int r,int p)
{
pushdown(now,left,right);
if ((left==l) && (right==r))
{
lazy[now]=p;
if (p==) sum[now]=;
else sum[now]=right-left+;
return;
}
int mid=(left+right)>>;
if (r<=mid) modify(ls[now],left,mid,l,r,p);
else if (l>=mid+) modify(rs[now],mid+,right,l,r,p);
else
{
modify(ls[now],left,mid,l,mid,p);
modify(rs[now],mid+,right,mid+,r,p);
}
sum[now]=sum[ls[now]]+sum[rs[now]];
}
void work0(int x)
{
int len=p[x].r-p[x].l+,lenr=query(root,,n,p[x].l,p[x].r);
if (p[x].l<=p[x].l+(len-lenr)-) modify(root,,n,p[x].l,p[x].l+(len-lenr)-,);
if (p[x].l+(len-lenr)<=p[x].r) modify(root,,n,p[x].l+(len-lenr),p[x].r,);
}
void work1(int x)
{
int len=p[x].r-p[x].l+,lenl=query(root,,n,p[x].l,p[x].r);
if (p[x].l<=p[x].l+lenl-) modify(root,,n,p[x].l,p[x].l+lenl-,);
if (p[x].l+lenl<=p[x].r) modify(root,,n,p[x].l+lenl,p[x].r,);
}
int main()
{
scanf("%d%d",&n,&m);
for (int i=;i<=n;i++)
{
scanf("%d",&a[i]);
l=min(l,a[i]);
r=max(r,a[i]);
}
for (int i=;i<=m;i++)
scanf("%d%d%d",&p[i].type,&p[i].l,&p[i].r);
scanf("%d",&q);
while (l<=r)
{
tot=;
mi=(l+r)>>;
build(root,,n);
for (int i=;i<=m;i++)
{
if (p[i].type==) work0(i);
else work1(i);
}
int regis=query(root,,n,q,q);
if (regis==) {ans=mi;l=mi+;}
else r=mi-;
}
printf("%d\n",ans);
return ;
}

BZOJ 4552 排序的更多相关文章

  1. BZOJ 4552 排序 Heoi2016

    记得当年省选的时候 这道题连暴力都没写对(尴尬ing) (当年天真的认为sort是左闭右闭的hhhhhh) 思路: 首先 二分答案 线段树 首先二分答案,然后需要知道进行m次排序后p位置上的数字是否大 ...

  2. BZOJ 4552: [Tjoi2016&Heoi2016]排序

    4552: [Tjoi2016&Heoi2016]排序 Time Limit: 60 Sec  Memory Limit: 256 MBSubmit: 579  Solved: 322[Sub ...

  3. bzoj 4552 [Tjoi2016&Heoi2016]排序 (二分答案 线段树)

    题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=4552 题意: 给你一个1-n的全排列,m次操作,操作由两种:1.将[l,r]升序排序,2 ...

  4. BZOJ 4552 [Tjoi2016&Heoi2016]排序 线段树的分裂和合并

    https://www.lydsy.com/JudgeOnline/problem.php?id=4552 https://blog.csdn.net/zawedx/article/details/5 ...

  5. bzoj 4552 [Tjoi2016&Heoi2016]排序——二分答案

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4552 二分答案,把 >= mid 的设成1.< mid 的设成0,之后排序就变成 ...

  6. BZOJ 4552 [Tjoi2016&Heoi2016]排序 | 二分答案 线段树

    题目链接 题面 题目描述 在2016年,佳媛姐姐喜欢上了数字序列.因而他经常研究关于序列的一些奇奇怪怪的问题,现在他在研究一个难题,需要你来帮助他.这个难题是这样子的:给出一个1到n的全排列,现在对这 ...

  7. BZOJ 4552: [Tjoi2016&Heoi2016]排序 线段树 二分

    目录 此代码是个假代码,只能糊弄luogu,以后再改,路过大佬也可以帮一下辣 update 10.6 此代码是个假代码,只能糊弄luogu,以后再改,路过大佬也可以帮一下辣 /* //fang zhi ...

  8. bzoj 4552: [Tjoi2016&Heoi2016]排序——二分+线段树

    Description 在2016年,佳媛姐姐喜欢上了数字序列.因而他经常研究关于序列的一些奇奇怪怪的问题,现在他在研究一个难题 ,需要你来帮助他.这个难题是这样子的:给出一个1到n的全排列,现在对这 ...

  9. 排序(bzoj 4552)

    Description 在2016年,佳媛姐姐喜欢上了数字序列.因而他经常研究关于序列的一些奇奇怪怪的问题,现在他在研究一个难题 ,需要你来帮助他.这个难题是这样子的:给出一个1到n的全排列,现在对这 ...

随机推荐

  1. HDU3507 Print Article(斜率优化dp)

    前几天做多校,知道了这世界上存在dp的优化这样的说法,了解了四边形优化dp,所以今天顺带做一道典型的斜率优化,在百度打斜率优化dp,首先弹出来的就是下面这个网址:http://www.cnblogs. ...

  2. 行列有序矩阵求第k大元素

    问题来源:http://www.careercup.com/question?id=6335704 问题描述: Given a N*N Matrix. All rows are sorted, and ...

  3. POJ 2923 Relocation (状态压缩,01背包)

    题意:有n个(n<=10)物品,两辆车,装载量为c1和c2,每次两辆车可以运一些物品,一起走.但每辆车物品的总重量不能超过该车的容量.问最少要几次运完. 思路:由于n较小,可以用状态压缩来求解. ...

  4. 加载gif动态图的三种方式

    准备:本地图片资源,GifView

  5. C#保留小数位数

    1.System.Globalization.NumberFormatInfo provider = new System.Globalization.NumberFormatInfo(); prov ...

  6. Jmeter 快速入门教程(三-3) -- 使用参数化

    参数化:简单的来理解一下,我们录制了一个脚本,这个脚本中有登录操作,需要输入用户名和密码,假如系统不允许相同的用户名和密码同时登录,或者想更好的模拟多个用户来登录系统. 这个时候就需要对用户名和密码进 ...

  7. copy_to_user,copy_from_user,get_user,put_user函数比较

    copy_to_user,copy_from_user,get_user,put_user函数比较 copy_to_user --  Copy a block of data into user sp ...

  8. 在telnet下操作memcache详解(操作命令详解)

    这篇文章主要介绍了在telnet下操作memcache详解,telnet下的memcache操作命令详解,需要的朋友可以参考下 在定位问题.测试等时候经常需要对memcache的数据进行一些操作,但是 ...

  9. MSChart 控件

    微软发布了.NET 3.5框架下的图表控件,功能很强劲,基本上能想到的图表都可以使用它绘制出来,给图形统计和报表图形显示提供了很好的解决办法,同时支持Web和WinForm两种方式,不过缺点也比较明显 ...

  10. Find K most Frequent items in array

    给定一个String数组,求K个出现最频繁的数. 记录一下查到的资料和思路: 1. 使用heap sorting, 先用hashmap求出单词和词频.需要额外建立一个class Node,把单词和词频 ...