bzoj 4552: [Tjoi2016Heoi2016]排序

Description

在2016年,佳媛姐姐喜欢上了数字序列。因而他经常研究关于序列的一些奇奇怪怪的问题,现在他在研究一个难题,需要你来帮助他。这个难题是这样子的:给出一个1到n的全排列,现在对这个全排列序列进行m次局部排序,排序分为两种:1:(0,l,r)表示将区间[l,r]的数字升序排序2:(1,l,r)表示将区间[l,r]的数字降序排序最后询问第q位置上的数字。

solution

在看到二分答案这个标签后就是SBT了
首先常规套路,如果值域较小,那么枚举值域线段树区间覆盖
那么这题这么做这个转换呢?直接二分答案,把小于的部分赋为0,大于等于部分1,这样转换过来了,注意线段树只要存1就好,0直接可以相减得出

#include <algorithm>
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>
#include <cmath>
#define RG register
#define il inline
#define iter iterator
#define Max(a,b) ((a)>(b)?(a):(b))
#define Min(a,b) ((a)<(b)?(a):(b))
using namespace std;
const int N=100005;
#define ls (node<<1)
#define rs (node<<1|1)
int n,m,a[N],t[N<<2],L[N],R[N],op[N],mark[N<<2],P;
void upd(int node){t[node]=t[ls]+t[rs];}
il void pushdown(RG int node,int l,int r){if(mark[node]==-1)return ;int k=mark[node],mid=(l+r)>>1;t[ls]=k*(mid-l+1);t[rs]=k*(r-mid);mark[ls]=mark[rs]=k;mark[node]=-1;
}
il void build(int l,int r,RG int node,int li){mark[node]=-1;t[node]=0;if(l==r){t[node]=(a[l]>=li);return ;}int mid=(l+r)>>1;build(l,mid,ls,li);build(mid+1,r,rs,li);upd(node);
}
il int query(int l,int r,RG int node,int sa,int se){if(l>se || r<sa)return 0;if(sa<=l && r<=se)return t[node];pushdown(node,l,r);int mid=(l+r)>>1;int q1=query(l,mid,ls,sa,se);int q2=query(mid+1,r,rs,sa,se);return q1+q2;
}
il void updata(int l,int r,RG int node,int sa,int se,int i){if(l>se || r<sa)return ;if(sa<=l && r<=se){t[node]=i*(r-l+1);mark[node]=i;return ;}pushdown(node,l,r);int mid=(l+r)>>1;updata(l,mid,ls,sa,se,i);updata(mid+1,r,rs,sa,se,i);upd(node);
}
bool check(int mid){build(1,n,1,mid);int l,r,re[2];for(int i=1;i<=m;i++){l=L[i];r=R[i];re[1]=query(1,n,1,l,r);re[0]=r-l+1-re[1];if(op[i]){updata(1,n,1,l,l+re[1]-1,1);updata(1,n,1,l+re[1],r,0);}else{updata(1,n,1,l,l+re[0]-1,0);updata(1,n,1,l+re[0],r,1);}}return query(1,n,1,P,P);
}
void work()
{scanf("%d%d",&n,&m);for(int i=1;i<=n;i++)scanf("%d",&a[i]);for(int i=1;i<=m;i++)scanf("%d%d%d",&op[i],&L[i],&R[i]);int l=1,r=n,mid,ans;scanf("%d",&P);while(l<=r){mid=(l+r)>>1;if(check(mid))ans=mid,l=mid+1;else r=mid-1;}printf("%d\n",ans);
}int main()
{work();return 0;
}

转载于:https://www.cnblogs.com/Yuzao/p/7663085.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/391122.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle之 手动创建 emp 表 与 dept 表

说明&#xff1a; 有时候我们需要通用的实验数据&#xff0c;emp表 与 dept表 但是数据库中有没有。 这时&#xff0c;我们可以手动创建。 -- 创建表与数据CREATE TABLE EMP(EMPNO NUMBER(4) NOT NULL, ENAME VARCHAR2(10), JOB VARCHAR2(9), MGR NUMBER(4), HIREDATE DATE, S…

深入理解InnoDB(8)—单表访问

1. 访问方法 MySQL把执行查询语句的方式称之为访问方法或者访问类型。 而访问方法大致分为两类 全表扫描索引 而进行细分的话可以分为以下几类 &#xff08;为了方便说明&#xff0c;先建一个表&#xff09; CREATE TABLE single_table (id INT NOT NULL AUTO_INCREMENT,key…

蝙蝠侠遥控器pcb_通过蝙蝠侠从Circle到ML:第二部分

蝙蝠侠遥控器pcbView Graph查看图 背景 (Background) Wait! Isn’t the above equation different from what we found last time? Yup, very different but still looks exactly the same or maybe a bit better. Just in case you are wondering what I am talking about, p…

camera驱动框架分析(上)

前言 camera驱动框架涉及到的知识点比较多&#xff0c;特别是camera本身的接口就有很多&#xff0c;有些是直接连接到soc的camif口上的&#xff0c;有些是通过usb接口导出的&#xff0c;如usb camera。我这里主要讨论前者&#xff0c;也就是与soc直连的。我认为凡是涉及到usb的…

工程项目管理需要注意哪些问题

在社会科学技术发展和市场经济繁荣昌盛的今天&#xff0c;为更好的满足社会人性化的需求&#xff0c;建设施工企业在建筑施工、布局以及内部运行都给予了落实。而工程项目是建筑施工企业面向建筑市场的窗口&#xff0c;是企业建筑活动的前沿阵地&#xff0c;管理需更严谨。 虽说…

leetcode 872. 叶子相似的树(dfs)

请考虑一棵二叉树上所有的叶子&#xff0c;这些叶子的值按从左到右的顺序排列形成一个 叶值序列 。 举个例子&#xff0c;如上图所示&#xff0c;给定一棵叶值序列为 (6, 7, 4, 9, 8) 的树。 如果有两棵二叉树的叶值序列是相同&#xff0c;那么我们就认为它们是 叶相似 的。 …

探索感染了COVID-19的动物的数据

数据 (The data) With the number of cases steadily rising day by day, COVID-19 has been pretty much in the headlines of every newspaper known to man. Despite the massive amount of attention, a topic that has remained mostly untouched (some exceptions being …

Facebook哭晕在厕所,调查显示用VR体验社交的用户仅为19%

美国娱乐软件协会ESA调查显示&#xff0c;有74%的用户使用VR玩游戏&#xff0c;而仅有19%的用户会用VR进行社交。 当我们说到VR社交&#xff0c;必然离不开Facebook。在刚刚结束的F8大会上&#xff0c;小扎展示了VR社交平台Facebook Spaces测试版&#xff0c;巧的是此前也有好…

网页自动刷新

eg1&#xff1a;<meta http-equiv”refresh” content”4” /> 间隔4秒网页自动刷新 eg2&#xff1a;<meta http-equiv”refresh” content”8;http://www.baidu.com” /> 等待8秒自动跳转到百度页面转载于:https://www.cnblogs.com/zwtqf/p/7667774.html

解决Javascript疲劳的方法-以及其他所有疲劳

Learn your fundamentals, and never worry again. 了解您的基础知识&#xff0c;再也不用担心。 新工具让我担心 (New Tools Worry Me) When JavaScripts shiny tool of the day comes out, I sometimes overreact. 当JavaScript一天一度的闪亮工具问世时&#xff0c;我有时R…

Java 8 的List<V> 转成 Map<K, V>

问题&#xff1a; Java 8 的List 转成 Map<K, V> 我想要使用Java 8的streams和lambdas转换一个 List 对象为 Map 下面是我在Java 7里面的写法 private Map<String, Choice> nameMap(List<Choice> choices) {final Map<String, Choice> hashMap new…

已知两点坐标拾取怎么操作_已知的操作员学习-第4部分

已知两点坐标拾取怎么操作有关深层学习的FAU讲义 (FAU LECTURE NOTES ON DEEP LEARNING) These are the lecture notes for FAU’s YouTube Lecture “Deep Learning”. This is a full transcript of the lecture video & matching slides. We hope, you enjoy this as mu…

北京供销大数据集团发布SinoBBD Cloud 一体化推动产业云发展

9月5日&#xff0c;第五届全球云计算大会在上海世博展览馆盛大开幕&#xff0c;国内外顶尖企业汇聚一堂&#xff0c;新一代云计算技术产品纷纷亮相。作为国内领先的互联网基础服务提供商&#xff0c;北京供销大数据集团(以下简称“SinoBBD”)受邀参加此次大会&#xff0c;并正式…

windows下有趣的小玩意

1.显示文件和隐藏文件。在当前目录下shift右键 选择cmd命令 运行显示文件: attrib -s -h 文件名 隐藏文件: attrib -s h 文件名 2.查看电脑支持的最大内存 在cmd下运行wmic memphysical get maxcapacity所得结果单位mb 所得/1024/1024 得到单位G 3.windowsR 输入…

rxjs angular_Angular RxJS深度

rxjs angularIn this tutorial, well learn to use the RxJS 6 library with Angular 6 or Angular 7. Well learn about:在本教程中&#xff0c;我们将学习将RxJS 6库与Angular 6或Angular 7结合使用。我们将了解&#xff1a; How to import the Observable class and the ot…

HashMap, LinkedHashMap 和 TreeMap的区别

HashMap, LinkedHashMap 和 TreeMap的区别 Java里面的HashMap, LinkedHashMap 和 TreeMap 有什么区别?我看不出以下3个key和value有什么不同的。Hashtables里面又是怎么样的呢&#xff1f; Map m1 new HashMap(); m1.put("map", "HashMap"); m1.put(&q…

“陪护机器人”研报:距离真正“陪护”还差那么一点

一款有“缺陷”的机器人&#xff0c;怎能做到真正的“陪护”&#xff1f; 近日&#xff0c;鼎盛智能发布了一款名为Ibotn的&#xff08;爱蹦&#xff09;幼儿陪伴机器人&#xff0c;核心看点就是通过人脸识别、场景识别等计算机视觉技术来实现机器人对儿童的陪护。不过&#xf…

neo-6m uno_Uno-统治所有人的平台

neo-6m unoFirst, we should start off with what Uno is and why you should care. 首先&#xff0c;我们应该从Uno是什么以及为什么要关心开始。 As stated on their website, Uno is "The only platform for building native mobile, desktop and WebAssembly apps wi…

【转】消息队列应用场景

一、消息队列概述 消息队列中间件是分布式系统中重要的组件&#xff0c;主要解决应用耦合&#xff0c;异步消息&#xff0c;流量削锋等问题。实现高性能&#xff0c;高可用&#xff0c;可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。 目前在生产环境&#xff0c;…

JDK和JRE区别是什么

问题&#xff1a;JDK和JRE区别是什么 他们的角色分别是什么&#xff1f;我们应该什么时候使用他们&#xff1f; 回答一 JRE是Java Runtime Environment&#xff08;Java运行时环境&#xff09;。它是一个包&#xff0c;集合了运行一个编译好的Java程序的一切必须的东西&…