区间问题
lixuwei2333
这个作者很懒,什么都没留下…
展开
-
A Simple Task【区间排序】【线段树】
题目链接:http://codeforces.com/contest/558/problem/E题意: 给定一个字符串, m次操作, 每次操作一个区间, 0表示让这个区间降序, 1 表示升序, 问最后字符串的样子。字符集只有26个,所以线段树维护区间内每个字母的数量,对于排序操作就直接暴力进行区间覆盖。#include<bits/stdc++.h>#define ...原创 2019-11-01 15:35:11 · 810 阅读 · 0 评论 -
Continuous Intervals【单调栈】【合法区间计数】
题目链接:https://nanti.jisuanke.com/t/41296从左到右枚举右端点,然后求合法的左端点的个数。用max表示区间最大值,min表示区间最小值,cnt表示区间不同数的个数。合法需要满足max-min-cnt == -1用单调栈可以找到每次添加右端点后,最大值和最小值需要更新的区间。(都是以R为右端点)用unordered_map可以找到区间内不同数的个...原创 2019-09-06 17:15:45 · 296 阅读 · 0 评论 -
Make Rounddog Happy【序列分治+DP】
DP维护从某点 往后/往前 遇到的第一对非法点对。然后分治计数,合并的时候根据最大值是 由左区间贡献还是右区间贡献 来进行分类,注意去重。可以枚举左/右区间端点,这样即能固定最大值也能固定剩余区间的长度。复杂度O(NlogN)#include <bits/stdc++.h>#define rep(i, a, b) for(int i = (a); i <= (...原创 2019-08-22 08:13:30 · 294 阅读 · 0 评论 -
菜菜种菜 Comet OJ - Contest #8
题目链接:https://cometoj.com/contest/58/problem/D?problem_id=2758对于第i个点,记录他左右距离最近的直接到达点的编号,分别为le[i]和ri[i]。当且仅当询问区间[L,R] ,满足 L<=i&&R >=i &&L>le[i]&& R< ri[i] 时第i号节点会...原创 2019-08-10 09:47:28 · 166 阅读 · 0 评论 -
Coprimes(从 i 位置往后第一个与其互质的数的位置)
bitset维护每个质因子出现的位置从后往前跑,每次找到一个位置使该数的所有质因子都没有出现过。把该数的所有质因子的bitset或起来,然后找从当前位置往后的第一个0位置。取反后用bitset的_Find_first函数可以解决。#include <bits/stdc++.h>#define rep(i, a, b) for(int i = (a); i &...原创 2019-08-19 10:47:52 · 214 阅读 · 0 评论 -
莫队模板
//莫队模板题//区间内不同数的个数:https://vjudge.net/problem/SPOJ-DQUERY#include<bits/stdc++.h>using namespace std;const int M = 1e6 + 10;int s[M],num[M],vis[M],block,ans,m;struct node{ int l,r,id;...原创 2019-07-24 13:50:59 · 176 阅读 · 0 评论 -
CodeCoder vs TopForces【树状数组 或 强连通分量】
题目链接:https://vjudge.net/problem/Gym-101142C题意,给出n个人在两个网站上的排名,求一个人可能战胜多少个人。x可能战胜y的条件,x至少有一个排名大于y。可能战胜是可传递的,假如a可能战胜b,b可能战胜c,那么a也可能战胜c(即使c的两个排名都大于a)。一开始对于可传递这一个条件没有读懂,以为需要直接可战胜才行。于是...原创 2019-04-04 21:20:52 · 292 阅读 · 0 评论 -
数列分块模板
操作1:区间开方操作2:区间求和#include <bits/stdc++.h>#define ll long long#define mp make_pair#define pb push_back#define rep(i,a,b) for(ll i = (a); i <= (b); i++)#define per(i,a,b) for(ll i = (a...原创 2019-03-15 20:11:19 · 127 阅读 · 0 评论 -
查询区间内第一个大于x的数
#include <bits/stdc++.h>#define ls (o<<1)#define rs (o<<1|1)#define mid (l+r>>1)using namespace std;const int N = 2e5+100;int tree[4*N];void build(int o,int l,int r) {...原创 2019-02-21 10:23:10 · 1718 阅读 · 0 评论 -
RMQ
const int MAX = 1e6+100;int dp[MAX][25];void RMQ(){ for(int i = 1; i <= n; i++) dp[i][0] = s[i]; for(int i = 1; i < 25; i++) for(int j = 1; j + (1 << i) - 1 <= n; j++...原创 2019-02-17 10:28:02 · 111 阅读 · 0 评论 -
D. The Union of k-Segments【被覆盖K次的点组成的区间】
题目链接此题要考虑坐标轴上两整数点之间的缝隙,所以将坐标乘2后离散化,另外还需要把左右的点一起离散化。#include<bits/stdc++.h>#define ll long long#define pii pair<int,int>#define fir first#define sec secondusing namespace std;con...原创 2019-02-09 21:41:46 · 286 阅读 · 0 评论 -
cdq分治求三维偏序
这题最恶心的地方在于去重题目链接#include <bits/stdc++.h>#define mid (l+r>>1)using namespace std;const int N=1e5+100;struct node{ int a,b,c,id,num; bool operator <(node x) const { //需要保...原创 2019-02-07 22:40:27 · 256 阅读 · 1 评论 -
Covered Points Count(m次区间覆盖,求覆盖次数从1-n的点的个数)
题目链接离散化就可以了,代码是以前写的,看起来有些莫名奇妙。为了防止长度为1的区间对离散化去重造成的影响,这里将区间改为左闭右开区间进行离散化。#include <bits/stdc++.h>#define ll long long#define pll pair<ll,ll>#define fir first#define sec second...原创 2019-02-15 16:55:31 · 822 阅读 · 0 评论 -
cf div3 E2. Array and Segments (选区间进行-1,使数组差值最大)
题目链接给一个长度为n的数组,和m个区间。每当你选择一个区间,数组中该区间内的数值全部减1,每个区间最多选一次。问数组内元素的差值(最大值-最小值)最大是多少。 注意事项:离散化分块。这里离散化遇到了问题,假如某个区间的左右端点相同(长度为1),那么去重时会把该区间删除掉。所以,可以将题目给定的 [l,r] 改为 [l,r+1) 再进行离散化。 #incl...原创 2019-02-15 16:45:42 · 244 阅读 · 1 评论 -
主席树无修改查询区间第k小
#include &lt;iostream&gt;#include &lt;cstdio&gt;#include &lt;cstdlib&gt;#include &lt;algorithm&gt;#define mid (l+r&gt;&gt;1)#define lson (o&lt;&lt;1)#defi原创 2018-08-25 09:58:25 · 218 阅读 · 0 评论 -
hdu6301Distinct Values(类似滑块思想)
题目链接 [题意] n 个数, m 个区间[l,r] 内 保证 不能重复, 但 相交区域外的可以重复, 问 最小字典序的 这样一个序列[思路]采用 Set 维护, Set 中 存放 1-n 表示可用的数字#include <iostream>#include <bits/stdc++.h>using namespace std;const i...原创 2018-07-25 09:21:47 · 230 阅读 · 0 评论 -
sdut连续序列(找3个字串使其和最大)
4233 –&amp;gt; 连续序列 var stime = &quot;1528547353&quot;; function updatetime(){ stime ++; var etime = new Date(parseInt(stime)*1000); $(&quot;#dt&quot;).html(etime.toString(&quot原创 2018-06-09 20:35:48 · 169 阅读 · 0 评论