Gym - 101620I Intrinsic Interval】的更多相关文章

题面在这里! 首先一个非常重要的性质是,两个好的区间的交依然是好的区间. 有了这个性质,我们只要找到包含某个区间的右端点最小的好区间,然后就是这个区间的答案拉. 至于找右端点最小的好区间就是一个扫描线问题啦 (和我之前出的那个题有点像,只不过从树上放到了序列上) #include<bits/stdc++.h> #define ll long long using namespace std; const int N=100005; #define pb push_back #define lc…
[CERC2017]Intrinsic Interval https://www.luogu.org/blog/ywycasm/solution-p4747# 这种“好的区间”,见得还是比较多的了. mx-mi=r-l 比较经典的题是统计这样的区间个数.可以分治+大力分类讨论mx,mi的位置 但是这个题是一个询问. 先观察一些显而易见的性质: 1.好的区间的交也是好的区间 2.好的区间的并也是好的区间 所以,考虑对于一个询问,如果往后固定r找到了一个[L,R]的L左边最靠后的l,使得[l,r]是…
首先理清这奇葩题意表述 给出一个\(1\)到\(n\)的排列\(p[]\)和\(m\)次询问,每次询问覆盖区间\([l,r]\)的最小区间\([a,b]\),满足\([a,b]\)内的元素排序后是连续整数序列.\(n,m\le 10^5,\;1\le l\le r\le n\). 方便表述,称满足(省略)的区间是"好"的,否则是"坏"的,钦定空区间是"好"的. 罗列一些可能用到的.很显然的性质 好区间的长度等于最大值与最小值之差: 不相离的两个好…
题目大意:给一个1-n的排列,有一堆询问区间,定义一个好的区间为它的值域区间长度等于它的区间长度,求包这个询问区间的最小好的区间. 题解 做法太神了,根本想不到. %%%i207m. 结论:当一个区间中相邻的数的对数等于区间长度-1,那么这个区间是好的区间,证明:*%%%%……*%%¥. 所以我们可以用扫描线对1-n扫一遍,用线段树维护i-now的相邻的数的对数,如果我们令a[i]+=i;那么当我们做到r时且a[l]=r,那么l到r是好区间. 然后我们对于每个询问按照l从大到小做,如果找不到就b…
题意 给定一个长度为 \(n\) 的排列,有 \(q\) 次询问,每次询问一个区间 \([l,r]\) ,找到最小的包含 \([l,r]\) 的区间,满足这个区间包含了一段连续的数字. \(n\leq 10^5\) 分析 考虑相邻的两个位置 \(i,i+1\),记两个位置的值为 $ x ,y(x< y)$ 如果要出现在答案里,要满足 \(val \in[x,y]\) 都出现. 用权值线段树维护一段权值区间出现位置的最左最右端 \([l,r]\),显然位置 \(p \in[l,r]\) 都要在区间…
题目描述 题目传送门 分析 考虑对于 \([l,r]\),如何求出包住它的长度最短的好区间 做法就是用一个指针从 \(r\) 向右扫,每次查询以当前指针为右端点的最短的能包住 \([l,r]\) 的好区间 第一个查询到的就是想要的区间 一定不会存在一个与这个区间交叉的区间更优的情况 因为这种情况两个区间交叉的部分一定会在之前被查询到 这样的话就可以把所有的询问离线下来,按照右端点从小到大排序依次处理 只需要快速地查询长度最短的好区间即可 这可以用线段树去维护 我们把线段树的节点定义为以某个点为左…
有一个结论,答案一定是所有包含其合法区间中$l$最大且$r$最小的 证明比较容易,考虑两个合法区间有交,那么交必然合法,同时交也必然包含该区间,因此这个区间一定是合法的(取$l$最大的和$r$最小的两个区间求交)且必然最小 将询问离线,类似于[cf997E][https://www.cnblogs.com/PYWBKTDA/p/13912635.html],枚举右端点$r$,维护一棵线段树记录区间$[l,r]$的$(mx-mn)-(r-l)$,相当于判断当前还没有找到最小的$r$的询问中$[1,…
\(\mathcal{Description}\)   Link.   给定 \(n\) 个区间,第 \(i\) 个为 \([l_i,r_i]\),有权值 \(w_i\).设一无向图 \(G=(V=\{1,2,\dots,n\},E)\),\((u,v)\in E\Leftrightarrow [l_u,r_u]\cap[l_v,r_v]\not=\varnothing\),求删除若干区间使得 \(G\) 无环的被删除区间权值和的最小值.   \(n\le2.5\times10^5\). \(\…
A. Assignment Algorithm 按题意模拟即可. #include<stdio.h> #include<iostream> #include<string.h> #include<string> #include<ctype.h> #include<math.h> #include<set> #include<map> #include<vector> #include<que…
2017 CERC Problem A:Assignment Algorithm 题目描述:按照规则安排在飞机上的座位. solution 模拟. 时间复杂度:\(O(nm)\) Problem B:Buffalo Barricades 题目描述:将二维平面划分为一个个单位格,在平面上有一些被标记的格子.将\(x,y\)轴当成是围栏,现在以此给出一些坐标,每次从那个坐标出发向\(x, y\)轴建围栏,并输出新围栏围住的被标记格子数. solution 待解决. C:Cumulative Code…