
RMQ
a1214034447
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Educational Codeforces Round 112 (Rated for Div. 2) 题解
题目链接:http://codeforces.com/contest/1555 A. PizzaForces solve: gcd是120,但是要处理240之内的最优情况,因为121就不是120+1。 #include<bits/stdc++.h> using namespace std; #define inf 0x3f3f3f3f typedef long long ll; const int mx = 3e2 + 10; int sum[mx]; int main(){ mem.原创 2021-08-03 22:36:51 · 303 阅读 · 0 评论 -
CF 1175E Minimal Segment Cover[RMQ]
题目链接:http://codeforces.com/problemset/problem/1175/E 解题思路: 预处理出每个点用一次可以到达最远的距离。那么某个点用两次可以到达最远距离就是他用一次到达最远距离的地方用一次到达的最远距离,所以我们可以去倍增。 #include <bits/stdc++.h> using namespace std; typedef l...原创 2019-06-07 16:10:52 · 293 阅读 · 0 评论 -
ZOJ - 4063(2018青岛现场赛) - 循环赛程
题目链接:https://vjudge.net/problem/ZOJ-4063 解题思路: 当k<lowbit(n)时无解,否则按循环赛程的顺序输出前k行前n个就是了,因为只有前lowbit(n)行在循环赛程中是没变的,其他都发生了改变不会出现a打b,c打d之后若有a打c那么就一定有b打d #include <bits/stdc++.h> using ...原创 2018-11-15 23:22:46 · 381 阅读 · 0 评论 -
Gym 100520A - 循环赛程
题目链接:https://vjudge.net/contest/269300#problem/A 解题思路: 很容易想到当n是2^k的时候,可以倍增的构造出来(保证构造出来的数组从小到大)。 如果a的前2^(k-1)和b的前2^(k-1)已经可以构造相同了,那么a的后2^(k-1)个数就构造成b前2^(k-1)的对应数+2^k,b后2^(k-1)由a的前2^(k-1)构造,那么由于是前...原创 2018-11-15 21:57:41 · 216 阅读 · 0 评论 -
Wannafly挑战赛1 C - LCA
题解思路:这题就求最近公共祖先,找出S集合中的深度最深的点,然后与其他点的最远距离取max然后除以二就是答案(肯定在中间是最好的). 代码: #include<iostream> #include<algorithm> #include<cstdio> #include<cstring> #include<vector>...原创 2017-10-16 21:32:48 · 350 阅读 · 0 评论 -
ZOJ - 4048(2018 青岛网络赛B) LCA + 二分思想
题目链接:点击这里 解题思路: 首先预处理出原来树中节点u的C(u)值,那么在给出的ki个节点后,将他们根据原C()大小从大到小排序. 那么假设最小情况下最大值不会超过第i个C()值,那么意思就是前i个节点的C()值要做出改变才行,怎么让他们都改变呢? 将红点设在前i个点的最近公共祖先上,就可以将他们都改变,且尽量最小. 对于前i个点C()的变化后最大值也可以递推求出. ...原创 2018-09-17 21:28:34 · 540 阅读 · 1 评论 -
牛客国庆集训派对Day6 J - LCA+生成树
题目链接:点击这里 解题思路: 因为边最多是点的+100,所以我们先生成一个生成树,然后剩下最多100个边.如果最小解不在生成树上面,那么最小解肯定会经过剩余100个边的某个端点,那么接下来把这剩下100个边的每个边拿去一个端点跑bfs(长度为1直接bfs)最短路,最后把生成树上面的最短路,和100个端点的最短路取最小就行了. #include<bits/stdc++.h...原创 2018-10-09 21:03:44 · 245 阅读 · 0 评论 -
poj 3368 - RMQ
题目链接:https://vjudge.net/problem/POJ-3368 解题思路: 题目给出不降序列, 令f[i] = v[i]==v[i-1]? f[i]+1 : 1; 查询区间f[i]的最大值可以RMQ,都是要对l进行剪切,使得v[l]的值是第一次出现的位置才行. #include <iostream> #include <algorithm...原创 2018-10-17 23:22:46 · 179 阅读 · 0 评论 -
zoj 3614-二维RMQ+容斥
RMQ求出矩阵区间最大,数组sum和pro分别存坐标i,j到右下角的矩阵所有元素和,和平方和,然后根据容斥求出某一矩阵的元素和,平方和。然后根据方差展开求最大坐标,就OK啦。。。。。 代码: #include #include #include #include #include #include #include #include #define inf 0x3f3f3f3f #de原创 2017-05-06 23:24:33 · 351 阅读 · 0 评论 -
zoj 3633 rmq或线段树
两个方法基本差不多,记住最近一次出现这个数的位置,就可以了。 RMQ : #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; const int mx=5e5+10; int n,m,num[mx],kep[m原创 2017-05-06 16:54:43 · 328 阅读 · 0 评论