![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
二分系列
a1214034447
这个作者很懒,什么都没留下…
展开
-
Codeforces Round #851 (Div. 2) A-E
Codeforces Round #851 (Div. 2)原创 2023-02-21 22:46:53 · 317 阅读 · 0 评论 -
Educational Codeforces Round 77 (Rated for Div. 2) 题解
题目链接:https://codeforces.com/contest/1260A - Heating #include<bits/stdc++.h>#define inf 0x3f3f3f3fusing namespace std;typedef unsigned long long ull;typedef long long ll;typedef pai...原创 2019-11-30 21:00:15 · 230 阅读 · 0 评论 -
2019-2020 ACM-ICPC Brazil Subregional Programming Contest 题解
题目链接:http://codeforces.com/gym/102346A.Artwork将相交的圆用并查集合并,最后查询一下是否有一个或者两个在一个并查集里面的圆形成这样的一个封闭#include <bits/stdc++.h>#define x first#define y second#define mid (l+r>>1)#def...原创 2019-10-30 15:17:41 · 2086 阅读 · 0 评论 -
2017 World Final专题
C:二分匹配使得至多的行列要求相同最多在同一个位置#include<iostream>#include<cstring> #include<iostream>#include<cstdio>#include<vector>#include<cmath>#include<queue>#inc...原创 2017-06-01 22:49:14 · 2624 阅读 · 0 评论 -
Codeforces Round #553 (Div. 2) 题解
题目链接:http://codeforces.com/contest/1151A. Maxim and Biology暴力每个做起点即可。#include <bits/stdc++.h>using namespace std;typedef long long ll;const int mx = 1e2 + 10;char s[mx]; int main(...原创 2019-04-25 21:54:53 · 152 阅读 · 0 评论 -
Gym - 101128J[凸包+二分]
题目链接:https://vjudge.net/problem/Gym-101128J解题思路:其实我们可以红点变成一个凸包,很显然如果黑点在凸包里面的话,那么就肯定满足存在凸包上的三个点值得他们组成的三角形包含黑点。然后我们可以以凸包上的一个顶点作为核心点,二分另一个顶点,查看黑点在这两个点形成的向量左边还是右边,不断缩小凸包的范围,最后缩成一个三角形就可以直接求解了。#...原创 2019-05-01 21:10:36 · 224 阅读 · 0 评论 -
FZU 2267-贪心+(hash or 后缀数组)
题目链接:https://vjudge.net/problem/FZU-2267解题思路:很明显只有当两个数相等的时候才决定谁要先选,一个很明显的贪心策略就是以这个数为开头到结尾,那个数大就选哪个数的开头。比如 3 7 6和3 7 5,肯定是选第一个的3,因为376>375。那么接下来就是考虑比大小的问题,一个方法就是把两个串拼接起来然后做后缀数组,那个排名大取哪个。另...原创 2019-04-23 13:37:12 · 190 阅读 · 0 评论 -
Codeforces Round #551 (Div. 2) 题解
题目链接:http://codeforces.com/contest/1153A. Serval and Bus计算每一班车到达车站的时间超过m,并且离m最近的时间去最小就好了。#include <bits/stdc++.h>using namespace std;const int mx = 1e2 + 10;int main(){ int n,m; ...原创 2019-04-23 17:05:14 · 195 阅读 · 0 评论 -
Gym - 100519H [二分+贪心]
题目链接:https://vjudge.net/problem/Gym-100519H解题思路:以度最大的那个点为根节点,那么从根节点出去的肯定要么是直线,要么就是圆。然后我们再看这题要怎么做,首先二分答案,然后就是要想怎么贪心,怎么样才能使得建立房屋的数量尽量小呢,那么就要尽量使得每个位置的兔子只能去一个屋子,也就是假设答案为x,那么就可以在一条长为2*x+1的链的中间放置一个...原创 2019-05-16 21:06:32 · 325 阅读 · 0 评论 -
Gym - 100851L [二分+线性推导]
题目链接:https://vjudge.net/problem/Gym-100851L解题思路:根据题目知道,墙的两边是不能放石头的,所以最终的结果肯定会收到两边墙的限制,从而使得答案不会超过1e9+1e5。此外我们再去二分最大高度,一个明显的结论就是以i为最高点建墙的话最少花费肯定是建一个金字塔形的墙面。但由于原始的墙面,有可能花费的更少,也就是当某一竖墙在金字塔的位置的高度小...原创 2019-05-16 21:43:45 · 262 阅读 · 0 评论 -
CF - 525E - meet-in-middle
题目链接:点击打开链接解题思路:解法很多,这里说一下怎么用meet-in-middle来做,跟分治很像,就是预先把一半的数据里面的所有结果和全都枚举取来,枚举出来后排个序,然后枚举另一半去二分找相差值,这样就可以用2^(n/2)*log(2^(n/2))找出所有的解。#include<bits/stdc++.h>using namespace std;type...原创 2018-04-25 21:44:24 · 303 阅读 · 0 评论 -
Codeforces Global Round 2 题解
题目链接:http://codeforces.com/contest/1119/problem/AA. Ilya and a Colorful Walk两点的最远距离是相互的,所以其中一个点肯定是左右端点。#include<bits/stdc++.h>#define inf 0x3f3f3f3fusing namespace std;typedef long ...原创 2019-04-12 22:40:20 · 150 阅读 · 0 评论 -
Codeforces Round #546 (Div. 2) 题解
题目链接:http://codeforces.com/contest/1136A. Nastya Is Reading a Book水题。#include <bits/stdc++.h>#define fi first#define se second #define lson l,mid,rt<<1#define rson mid+1,r,rt...原创 2019-03-19 21:16:01 · 201 阅读 · 0 评论 -
CF #470 div2-C 模拟
解题思路:设ST[i]为Ti的前i项和,我们将Vi+ST[i-1]插入一个set中,然后在set中小于ST[i]的元素全部删除,这说明这些堆的雪已经被用完了,那么他们剩下的肯定不足Ti,算他们剩余的就是Vi+STi-1 - STi + Ti就是用完之前还剩下的量,那么set里面还有的个数就是可以给满Ti雪的堆了#include<bits/stdc++.h>using namespac...原创 2018-03-16 21:35:09 · 130 阅读 · 0 评论 -
CF #469D div2 - 二分
解题思路:假设这是要弄得区间是l,r,mid是中间,那么很容易的就发现l-mid是不会动的,有一种情况mid这个点也要动一次,那就是l前面有个空格子踩了之后还要再移动一次,l-r区间长度是奇数时,mid这个点也要动。用begs标记l前面的空格子是不是需要再移动一次,其实我们只需要知道这个区间有的数是奇数还是偶数,很明显一开始所有数都是在奇数上的,之后的奇偶数性质可以根据l前面的那个空格判断。...原创 2018-03-27 20:33:28 · 145 阅读 · 0 评论 -
CF- 975C 前缀和二分
解题思路:假设此时在射击到第i个勇士那么就可以用sum[i-1]+这个时刻的箭数量去二分查找第一个大于它的前缀和位置,这个位置就是接下来要到达的勇士位置.sum[i]表示位置i的前缀和。#include<bits/stdc++.h>using namespace std;typedef long long ll;const int mx = 2e5 + 10;int n,m;...原创 2018-05-12 12:49:08 · 258 阅读 · 0 评论 -
牛客网暑期ACM多校第二场G - 双指针操作
题目链接:点击这里 解题思路:第一种:如果没有花费限制的话,那么都集中在中位数那里一定是最优的。所以我们可以二分答案然后去找可行区间在那里面就可以直接集中到中位数一定是最优的。第二种:我们主要说第二种骚操作,从左到右枚举集中点,当前最优状态可以大部分继承上一个状态的最优状态。用两个指针维护最优区间,也就是集中点左边最远的距离和右边最远的距离。这样维护居然跑了100多MS,比二分...原创 2018-08-04 21:06:46 · 138 阅读 · 0 评论 -
ZOJ - 4048(2018 青岛网络赛B) LCA + 二分思想
题目链接:点击这里 解题思路:首先预处理出原来树中节点u的C(u)值,那么在给出的ki个节点后,将他们根据原C()大小从大到小排序.那么假设最小情况下最大值不会超过第i个C()值,那么意思就是前i个节点的C()值要做出改变才行,怎么让他们都改变呢?将红点设在前i个点的最近公共祖先上,就可以将他们都改变,且尽量最小.对于前i个点C()的变化后最大值也可以递推求出. ...原创 2018-09-17 21:28:34 · 483 阅读 · 1 评论 -
Gym - 101635K - 凸包+(三分或叉积)
题目链接:https://vjudge.net/problem/Gym-101635K 解题思路:寻找最小覆盖矩形使得能把蛋糕上面所有的点都覆盖,求出他的宽度,高度不限.那么首先求出n个点组成的凸包.枚举凸包上的所有边,再找凸包上的一个离这条边最远的点,经过此点做边的平行线。那么此两条平行线无限延长肯定能覆盖所有的点,宽度就是两平行直线的距离.取每条边都这么做然后最后取答案...原创 2018-10-25 18:11:48 · 214 阅读 · 0 评论 -
Gym - 100520K - 半平面交
题目链接:https://vjudge.net/problem/Gym-100520K 解题思路:二分圆的半径,然后用半平面交解得是否有解,最后在有解的多边形中取最远的两个点看他们的距离是否超过直接,如果超过,那么以这两个点为圆心的两个圆就不会相交了。最远的点也就是枚举顶点两两的距离。 #include <bits/stdc++.h>using namespac...原创 2018-11-15 22:33:26 · 154 阅读 · 0 评论 -
ZOJ - 4062(2018 青岛现场赛) 二分
题目链接:https://vjudge.net/problem/ZOJ-4062 解题思路:二分一个最小值,那么所有位置必定要大于等于这个值,那么就在一个位置上加满之后再向后面一定,一直横向左右跳的加就行了,直到终点在n或者n-1位置。 #include <iostream>#include <algorithm>#include <cstd...原创 2018-11-15 23:17:26 · 247 阅读 · 1 评论 -
ACM-ICPC Nanjing Onsite 2018 - 最小球覆盖
题目链接:https://nanti.jisuanke.com/t/33673 解题思路:这已经是老的不能再老的题了,模拟退火或者三分套三分套三分等等都可以。 三分代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;typedef unsigned long long u...原创 2018-12-02 13:24:24 · 299 阅读 · 0 评论 -
CodeForces - 552D - 枚举二分查找
题目链接:https://vjudge.net/problem/CodeForces-552D 解题思路:枚举每个边,以这条边为直线上面的点数可以事先预处理然后用二分斜率找到。假设直线上有i个点,那么就可以有i*(i-1)/2的边数组合方案,那么这个直线就会被计算i*(i-1)次,但这条直线的贡献只有i*(i-1)(i-2)/6次。所以每次枚举一个边就加上这边做直线上面点的数量-2...原创 2019-02-26 17:21:38 · 172 阅读 · 0 评论 -
poj 2886 - 树状数组+二分
题解思路:这里我们可以将逆时针一同转化为顺时针,那么就是如果逆时针跳过m个人那么顺时针应该是k(圈里现有人数)-m+1,为什么要加1呢,因为我们出发点是上一次被淘汰的那个人,他已经不属于这个圈子了,所以转化成顺时针要多加1,那么我们假设刚刚被淘汰的人在po位置,那么无非是两种情况:下个被淘汰的在po-n中或1-po中,如果po-n中的人数不够的话那肯定就在1-po中,这个可以用树状数组维护,另原创 2017-10-27 21:20:41 · 366 阅读 · 0 评论