2018宁夏邀请赛 L. Continuous Intervals】的更多相关文章

2018宁夏邀请赛 L Continuous Intervals(单调栈+线段树) 传送门:https://nanti.jisuanke.com/t/41296 题意: 给一个数列A 问在数列A中有多少个区间满足,区间内数字排序后是一段连续的连续的区间 即排序后区间内的任意元素满足 \(a_{i+1}-a_i<=1\) 题解: 根据题意可知 满足题意的区间应当满足以下性质: \(max-min==num-1\) 即当前区间最大的数字减去当前区间最小的数字等于区间数字的种类数 我们枚举区间的右端点…
题目链接:https://nanti.jisuanke.com/t/28412 题意: 给出n个数的序列.问序列中有多少个区间满足,排序完之后任意两个相邻的数之差不大于1. 题解: 用max表示区间最大值,min表示区间最小值,cnt表示区间数字的种数.那么问题转化成求max-min=cnt+1的区间数. 用线段树维护每个区间的max-min-cnt最小值及最小值的个数,不用单独维护max,min和cnt.注意max-min >= cnt+1. 从1~n枚举R.对于每个枚举的R,更新以R为后缀的…
转化一下询问即为区间$max - min + 1 = cnt$,其中$cnt$表示区间内数的种类数. 即求有多少区间$max - min - cnt=-1$,注意到任意区间的$max-min-cnt \geq -1$,那么即维护区间$max-min-cnt$的最小值和最小值的个数,再看最小值等不等于$-1$就行了. 那么可以用扫描线扫右端点$r$,线段树维护左端点为$1, 2,\dots,r-1$的区间最小值和最小值的个数.每加入一个数,$r$这里必定为$-1$,所以当前区间最小值的个数就是答案…
------------7题弟弟,被各位半小时13题的大佬打惨了(滑稽)---------- 签到题就不写了. F :Moving On            (1247ms) 题意:给定大小为N的带点权,带边权的完全图,N<200. 然后Q次询问,每次给出(u,v,w),让你求在除了起点终点的其他途经点的点权都<=w的条件下的最短路. 思路:可以离线做的话,显然就是需要排序了. 然后想到floyd就是一个用点更新的最短路算法. 那么我们把floyd的第一层按点权排个序即可. 那么第k层的di…
https://vjudge.net/problem/Gym-102222L 题意:给你n个数的序列,让判断有几个区间满足排完序后相邻两数差都不大于1. 题解:对于一个区间 [L,R],记最大值为 max.最小值为 min.数 字种类数为 cnt,那么这个区间是 continuous interval 当且 仅当 max−min+ 1 = cnt. 考虑从小到大枚举 R,用线段树维护每个 L 的区间 [L,R] 的 max−min−cnt 的值. 由于总有 max−min+1 ≥cnt,那么只需…
题目链接 :https://nanti.jisuanke.com/t/26217 Description: There is a positive integer X, X's reversion count is Y. For example, X=123, Y=321; X=1234, Y=4321. Z=(X-Y)/9, Judge if Z is made up of only one number(0,1,2...9), like Z=11,Z=111,Z=222,don't cons…
题目链接:https://nanti.jisuanke.com/t/28411 题意: 给出n(n<=36)个点的一个图.求点覆盖集数. 题解: 将n个点折半为L和R两部分.对于R内部的边,枚举状态判断是否可行.对可行的状态维护高维前缀和. 之后判断L内部的可行状态.对于每一个L内部的可行状态,在高维前缀和中找出与他成立的状态相乘就是答案. #include <bits/stdc++.h> using namespace std; ; typedef long long ll; int…
//代码跑的很慢四秒会超时,结尾附两秒代码(标程) #include<bits/stdc++.h>using namespace std;typedef long long ll;const ll inf=0x3f3f3f3f;vector<pair<int,int>>tree[100010];ll dp[100010][110];/*dp[u][i]表示u节点为根的子树上选择了i个叶子节点,会经过u这个子树的边的权值和的最优值.转移方程如下:dp[u][i]=min(…
https://vjudge.net/problem/Gym-102222K 题意:给定N点M边的无向图,每个点有点权.  点覆盖表示某个点集S{}覆盖了所有的边,其贡献是S中点权之积. 现在让你求所有满足条件的点集贡献之和.N<36,保证无重边,自环. 思路:点覆盖选谁不选谁肯定状压,N有36再来个折半,然后想办法合并两边.可以枚举左边那堆点的状态,对于左边没选中的那些点,若他连接的其他左边点都被选中了(否则该状态舍去), 求出他连接的右边那些点,即是右边的必选点,那么右边就可以选该必选点集或…
题意:给你一个序列,问你这个序列有多少个子区间,满足把区间里的数排序之后相邻两个数之间的差 <= 1 ? 思路:https://blog.csdn.net/u013534123/article/details/81164504 代码: #include <bits/stdc++.h> #define INF 0x3f3f3f3f #define ls (o << 1) #define rs (o << 1 | 1) #define pii pair<int,…