二分
文章平均质量分 52
Clove_unique
All that you have lost can be won back bit by bit as long as you wish for it.
展开
-
CF#403(Div.2) 解题报告
A题意简述有2n双袜子,编号为1..n。 按顺序从包中拿出,如果这只袜子的另一只还没有拿出,就放在桌子上,否则将桌子上的另一只拿走。 求桌子上最多有多少只袜子。数据范围1≤n≤1051\le n\le 10^5题解模拟。。代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdlib>#include<cs原创 2017-03-06 11:19:08 · 1282 阅读 · 4 评论 -
[BZOJ1567][JSOI2008]Blue Mary的战役地图(二分+矩阵hash)
题目描述传送门题解二分答案之后O(n2)O(n^2)矩阵hash 就是个裸题代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>#include<map>using namespace std;#define UL unsigned long long#defi原创 2017-02-20 23:16:37 · 883 阅读 · 0 评论 -
[POJ2114]Boatherds(点分治+二分)
题目描述传送门题解裸的点分治 暴力就行代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;#define N 10005int n,x,y,m,sum,root;int q[N],ans[N];int tot,point[N原创 2017-02-16 07:00:53 · 562 阅读 · 0 评论 -
[BZOJ1532][POI2005]Kos-Dicing(二分+最大流)
题目描述传送门题解二分答案mid 最大流判断 s->每场比赛,1 每场比赛->参加这场比赛的两个人,1 每个人->T,mid 判断是否能满流即可代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<queue>#include<cmath>using namespace原创 2017-01-25 15:48:06 · 679 阅读 · 0 评论 -
[BZOJ4556][Tjoi2016&Heoi2016]字符串(后缀数组+二分+st表+主席树)
题目描述传送门题解思路清晰就很好写… 首先二分答案mid 找到Suffix(c),在height数组中向左向右分别二分最远的lcp为mid的后缀 用st表实现O(1)O(1)查询 然后就判断[l,r]中是否出现了a…b的后缀 用可持久化线段树判断即可常数大,需要卡卡常数 学习了学姐的一个方法就是这种只需要判断有没有数的不用求具体几个的就只要有数了就返回,不做无用功然后说一下如何在heig原创 2017-01-11 14:52:00 · 873 阅读 · 0 评论 -
[BZOJ1414][ZJOI2009]对称的正方形(manacher+单调栈+二分)
题目描述传送门题解跟这道题gang了半晚上,写出来了一个理论复杂度O(n2log2n)O(n^2log^2n)的做法,然后各种剪枝各种砍常数,最后竟然A了… 网上题解貌似是二分+hash?好像也有用manacher+单调队列并且时间复杂度科学的方法,不过各种看不懂…首先我们参考manacher的做法,将一些分隔符插入矩阵,来处理奇数偶数 并且对于每一个点都求出来它横纵的最长回文子串 然后枚举对原创 2017-01-11 20:17:28 · 1204 阅读 · 0 评论 -
[BZOJ2732][HNOI2012]射箭(二分+半平面交)
题目描述传送门题解首先可以二分答案 如何判定? 对于每一个靶子 ax2+bx−y2<=0ax^2+bx-y_2<=0 ax2+bx−y1>=0ax^2+bx-y_1>=0 x,y1,y2x,y_1,y_2是常数,就相当于是两个关于a,b的方程,然后搞两个半平面(详情参考高中数学课本必修5线性规划问题) 所有的半平面有交说明有解 不过这道题精度很卡,建议eps开小一点然后用long do原创 2017-01-20 20:39:06 · 617 阅读 · 0 评论 -
[BZOJ1733][Usaco2005 feb]Secret Milking Machine 神秘的挤奶机(二分+最大流)
题目描述传送门题解这题目就是p 实际上就是问有没有不同的t条路径从1走到n,然后路径的最大值最小 二分显然,二分出mid之后,s->1,T;n->t,T,然后对于每一条边直接连,容量为1 需要注意的是这题是无向边代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>原创 2017-02-12 19:39:01 · 729 阅读 · 0 评论 -
[BZOJ1316]树上的询问(点分治+二分)
题目描述传送门题解点分治裸题 每一次求出deep之后排序然后两次二分 因为点分常数很大做一次求m个比做m次快得多代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;#define N 10005int n,x,y,z,m,s原创 2017-02-19 23:10:17 · 1067 阅读 · 0 评论 -
[POJ2318]TOYS(计算几何+二分)
题目描述传送门 题意:一些直线把一个矩形分割成了若干个部分。给出一些点问每一个部分里有多少个点题解叉积的性质:a×ba\times b,如果b在a的左边,叉积为正,右边为负,ab共线即为0 可以二分出所在部分的右边界,是否在某一条直线的右边可以用叉积判断一下代码#include<algorithm>#include<iostream>#include<cstring>#include<cs原创 2017-01-01 16:40:58 · 445 阅读 · 0 评论 -
[BZOJ2709][Violet 1]迷宫花园(二分+spfa)
题目描述传送门题解二分答案+spfa判定代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>#include<queue>using namespace std;#define N 50005const double eps=1e-7;char str[105][原创 2017-03-17 19:16:27 · 480 阅读 · 0 评论 -
[Codeforces716E]Digit Tree(点分治+扩欧+二分)
题目描述传送门 题意:一棵树,每条边上有一个数字(1~9),给出一个与10互质的数m,问整棵树上有多少条链满足从起点走到终点树链上形成的十进制数是m的倍数。题解本来是看dsu on the tree找到了这道题,但是发现用dsu on the tree写好麻烦啊=w= 不过用点分就没有那么恶心了 对于每一次分治到的子树,需要一些节点的信息:从当前点出发向上走到根形成的十进制数在模m意义下,记为原创 2017-03-08 17:10:47 · 624 阅读 · 0 评论 -
[BZOJ3796]Mushroom追妹纸(hash+后缀数组+二分)
题目描述传送门题解把s1和s2接在一起,中间加一个分隔符 预处理出s3在s1和s2中的哪些位置出现过(hash) 求出sa和height,容易知道答案一定在相邻的两个在不同串里的后缀中产生 对于每一对相邻的后缀,二分一下满足条件的最大长度,即没有出现s3(前缀和) 时间复杂度O(nlogn)O(nlogn)代码#include<algorithm>#include<iostream>#i原创 2017-03-28 16:18:22 · 928 阅读 · 0 评论 -
[BZOJ3958][WF2011]Mummy Madness(二分+扫描线+线段树)
题目描述传送门题目大意:一个正方形的网格,你与木乃伊轮流移动(你走出第一步)。轮到你时,你可以移动到相邻的8个格子之一,或者站着不动。轮到木乃伊时,每个木乃伊会移动到其相邻的格子之一,使得他与你的欧几里得距离尽量小(假设你与木乃伊都站在格子的中心位置)。允许多个木乃伊同时占据同一个格子。 在每个单位时间内,你先做出移动,然后木乃伊做出移动。如果你与任何一个木乃伊站在同一位置,你会被抓住。当然,你试原创 2017-04-20 11:27:29 · 851 阅读 · 1 评论 -
[BZOJ1044][HAOI2008]木棍分割(二分+贪心+dp)
题目描述传送门题目大意:有n根木棍, 第i根木棍的长度为Li,n根木棍依次连结了一起, 总共有n-1个连接处. 现在允许你最多砍断m个连接处, 砍完后n根木棍被分成了很多段,要求满足总长度最大的一段长度最小, 并且输出有多少种砍的方法使得总长度最大的一段长度最小. 并将结果mod 10007。题解第一问贪心+二分判定 判定出了答案之后dp一下,f(i,j)表示砍了i刀,砍到第j个的方案数,单调地扫原创 2017-05-02 21:48:02 · 680 阅读 · 0 评论 -
[BZOJ1083][SCOI2005]繁忙的都市(二分+并查集)
题目描述传送门题目大意:给出n个点m条边的无向图,每一条边有一个边权,要求选出一些边,将n个点连通,并且边的数量最少,并且边权的最大值最小。题解首先二分答案,然后并查集判定这些边是否能将n个点连通 边数最少必然是一棵树啊代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath原创 2017-05-02 21:01:30 · 786 阅读 · 0 评论 -
[BZOJ2084][Poi2010]Antisymmetry(hash+二分||manacher)
题目描述传送门题解判断是否是反对称的一眼hash啊,关键是怎么求区间个数呢? 反对称也是对称啊!——由对称中心到两遍的长度满足单调性!即短的不是反对称的那么比这个长的一定不是反对称的。 那么我们可以枚举反对称的中心,然后二分反对称的长度。每一次判断的时候首先用hash预处理出来前缀和,然后每一次把短的乘上一个幂次就可以实现O(1)O(1)判断,总的复杂度是O(nlogn)O(nlogn)的。原创 2016-11-10 23:56:11 · 765 阅读 · 0 评论 -
[BZOJ2095][Poi2010]Bridges(二分+最大流+欧拉图)
题目描述传送门题目大意:n个点m条边的无向图,每一条边正向走和反向走的价值是不同的。求图中的一个欧拉回路,并且走的价值的最大值最小。题解很容易想到二分答案,关键是怎么判定 判断欧拉回路的条件有两个:①整个图强连通②每个点的入度=出度 首先如果图中的某一条边断掉了那么无解 然后能走的边有一些是有向边,有一些是无向边,这就是一个混合图的欧拉回路判定问题 首先将每一条无向边随便规定一个方向,求出每原创 2017-04-14 08:46:50 · 621 阅读 · 0 评论 -
[BZOJ4237]稻草人(cdq分治+单调栈+二分)
题目描述传送门题解对x排序了之后按照x分治,每一次对y排序 考虑如何处理左区间里的点对右边的点的影响,也就是如何计算左边和右边配对的情况 用两个指针扫的时候,如果左边的连续一段区间里的点想要都和右边的某一个点配对的话,必须满足x单调递减 而右边的区间的某一个点如果要是想和左边的点配对的话,只能是y在 它和第一个x在它左边的点 所确定的y的范围内的点 对于左边的点维护一个x单调递减的栈,对右边原创 2017-03-24 21:59:51 · 743 阅读 · 0 评论 -
[BZOJ3572][Hnoi2014]世界树(虚树+树形dp+二分+lca)
题目描述传送门题解首先建出虚树来,边权即为原树上的距离 这题我dp的方法非常蠢 f(i)表示从i的父边出去(必须经过i的父亲)到达的关键点的最短路 fp(i)表示最短路的点 g(i)表示i到i的子树中到达的关键点的最短路 gp(i)表示最短路的点 然后这两个互相转移一下…dp完了之后枚举虚树上的每一条边(u,v) 因为已经知道了从u出去到关键点的最短路和从v出去到关键点的最短路 然后原创 2017-03-13 21:47:39 · 828 阅读 · 0 评论 -
[BZOJ2440][中山市选2011]完全平方数(二分+容斥原理)
我想我还没有成熟到可以原谅背叛。原创 2016-05-02 19:28:14 · 572 阅读 · 0 评论 -
[BZOJ2986]Non-Squarefree Numbers(二分+容斥原理)
题目描述传送门题解和BZOJ2440基本一样,只不过是补集而已 用莫比乌斯函数当容斥系数代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;#define N 300005#define LL long longLL n,a原创 2017-03-21 22:00:23 · 544 阅读 · 0 评论 -
[BZOJ2406]矩阵(二分+有源汇有上下界的可行流)
题目描述传送门题解刚开始没看见绝对值。。。 把这道题翻译一下其实就是构造一个b矩阵,其中每一个点有限制[L,R],令矩阵c=a-b,使c矩阵每一行的和的绝对值和每一列的和的绝对值的最大值最小最大值最小很容易想到二分 二分答案mid之后,用网络流判定 就是满足|∑ai−∑bi|≤mid|\sum a_i-\sum b_i|\le mid 分类讨论一下得出∑ai−mid≤∑bi≤∑ai+mid\原创 2017-02-05 19:09:10 · 1355 阅读 · 0 评论 -
[BZOJ2282][Sdoi2011]消防(二分+贪心)
题目描述传送门题解最大值最小很容易想到二分。 二分出所有点到路径的最大值,然后判断这个最大值是否能满足条件。 一个很重要的性质:一定存在一种方案,这个路径在树的最长链上。证明的话可以用反证法,假设该路径不在最长链上,那么这种方案的最大值一定不比在最长链上的更优。 根据这个性质我们可以确定一个贪心的策略。首先确定树的最长链,然后求出最长链上的每一个点到不是最长链上的点的最远距离。如果最长链上存在原创 2016-11-11 10:29:52 · 1399 阅读 · 0 评论 -
[BZOJ2083][Poi2010]Intelligence test(sort+二分)
题目描述传送门题解这个题显然要是能把数都读进来就是可以O(nlogn)O(nlogn)搞的。 首先将原数列的数按照权值第一关键字,位置第二关键字排序,确定每一个值所在区间的左右端点。 每读入一个数,贪心的思想,二分查找在这个值区间内位置大于上一个数的位置且最靠左的点。如果无法找到则无解。代码#include<algorithm>#include<iostream>#include<cstri原创 2016-11-10 23:48:20 · 393 阅读 · 0 评论 -
[Codeforces#475D]CGCDSSQ(st表+二分+数学相关)
题目描述传送门 题意:对于每一个xix_i求存在多少(l,r)(l,r)满足gcd(al,al+1...,ar)=xigcd(a_l,a_{l+1}...,a_r)=x_i题解设g(l,r)=gcd(al,al+1...,ar)g(l,r)=gcd(a_l,a_{l+1}...,a_r),那么有一个非常重要的性质: g(l,r),g(l,r+1),g(l,r+2)...g(l,r),g(l,r+原创 2016-11-08 11:13:36 · 546 阅读 · 1 评论 -
[noip测试]零食店(floyed+二分)
snackstore.in snackstore.out 时间限制:1 s 内存限制:256 MB题目描述成功找到了学长之后学姐感觉到有些饿,于是决定去附近的零食店给自己和学长买些零食。 焦作市的有n家零食店,由m条道路连接着这些零食店,每条道路都有自己的长度l,每家零食店都有自己的消费指数。 由于学姐是个穷B,所以去买零食的路上不能经过某些消费指数超过一定限度的店。原创 2016-11-06 17:32:46 · 811 阅读 · 0 评论 -
[BZOJ2097][Usaco2010 Dec]Exercise 奶牛健美操(二分+树形dp+贪心)
We laughed and kept saying"see u soon",but inside we both knew we'd never see each other again.原创 2016-09-27 20:33:42 · 1211 阅读 · 0 评论 -
[BZOJ1052][HAOI2007]覆盖问题(二分+dfs)
题目描述传送门题解可以发现一个非常重要的性质:如果我们确定了在一定范围内有一些点,然后用边长为常数k(<边界范围)的三个正方形去覆盖它们的话,如果有合法的方案,那么一定存在至少一个正方形,它的两条边分别卡在两个边界上。 这个性质非常容易证明。因为如果确定是上下左右的边界,那么每一个边界上至少有一个点需要去覆盖。然而我们只有三个正方形,若想要覆盖这四个点,一定存在一个正方形覆盖了两个点,那么它就一定原创 2016-11-03 23:10:57 · 662 阅读 · 0 评论 -
[NOIP2012][CODEVS1218]疫情控制(二分+倍增+贪心)
以梦为马 以汗为泉 不忘初心 不负韶华原创 2016-08-23 18:47:03 · 2673 阅读 · 0 评论 -
[BZOJ1189][HNOI2007]紧急疏散evacuate(bfs+二分+最大流)
我快要死了,但是,还能成为你的眼睛继续看到未来。原创 2016-05-04 10:13:57 · 635 阅读 · 0 评论 -
[BZOJ1305][CQOI2009]dance跳舞(枚举二分+最大流)
思想需要经验的积累,灵感需要孤独的沉淀,最细致的体验需要最宁静透彻的观照。原创 2016-05-02 17:35:07 · 601 阅读 · 0 评论 -
[BZOJ2016][Usaco2010]Chocolate Eating(二分)
题目描述传送门题解二分水题。字典序尽量大只是贪心地判定就行了。 但是也有一个坑点,就是最后没有吃的巧克力都要在最后一天吃完。代码#include<iostream>#include<cstring>#include<cstdio>using namespace std;#define LL long long#define N 50005const LL inf=1e18;int n,原创 2016-11-11 23:06:03 · 625 阅读 · 0 评论 -
[BZOJ4326][NOIP2015]运输计划(二分+dfs序+树上差分)
“过了这么多年,我终于发现了那些让我喜欢的人的特质,他们总是生机勃勃的,有自己喜欢的事情……容得下生命的不完美,也经得起世事的颠簸。”——扶南原创 2016-10-18 14:26:54 · 1956 阅读 · 0 评论 -
[BZOJ4582][Usaco2016 Open]Diamond Collector(二分+st表)
题目描述传送门题解先排序是显然的吧= = 求出每一个点它向右能连续放到一个架子上的最右的一端和最长长度,因为是满足单调性的,其实扫一遍就可以,然而我当时dt写了个二分。。 然后对于一个点,再求它最右端的右边一直到n的最长长度的最大值。又写了个st表。。实际上从右向左扫一遍就可以。。。代码#include<algorithm>#include<iostream>#include<cstring原创 2016-11-16 14:30:02 · 558 阅读 · 0 评论 -
[BZOJ3230]相似子串(后缀数组+二分+st表)
题目描述传送门题解题目实际上是要求最长公共前缀和后缀的长度的平方和。个人认为题目描述中a和b应该取min 把这个串正反都求一下sa和height 由于是本质不同的子串,所以每一个后缀的贡献应该是当前串刨去它和前一个的lcp的剩下的前缀 可以求出贡献的前缀和,显然满足单调性 对于每组询问,二分找出这两个子串在rank里的位置,然后用rmq求区间最小值 再找出这两个子串的结尾的位置,在反串那边原创 2016-12-28 11:30:35 · 863 阅读 · 3 评论 -
[POJ1226]Substrings(后缀数组+二分)
题目描述传送门题解先将 n 个字符串连起来,中间用不相同的且没有出现在字符串中的字符隔开,求后缀数组。然后二分答案,再将后缀分组。判断的时候,要看是否有一组后缀在每个原来的字符串中至少出现两次,并且在每个原来的字符串中,后缀的起始位置的最大值与最小值之差是否不小于当前答案(判断能否做到不重叠)。代码#include<iostream>#include<cstring>#include<cstd原创 2016-12-27 23:02:21 · 867 阅读 · 0 评论 -
[SPOJ220]PHRASES - Relevant Phrases of Annihilation(后缀数组+二分)
题目描述传送门 题意:给定 n 个字符串,求在每个字符串中至少出现两次且不重叠的最长子串。题解先将 n 个字符串连起来,中间用不相同的且没有出现在字符串中的字符隔开,求后缀数组。然后二分答案,再将后缀分组。判断的时候,要看是否有一组后缀在每个原来的字符串中至少出现两次,并且在每个原来的字符串中,后缀的起始位置的最大值与最小值之差是否不小于当前答案(判断能否做到不重叠)。代码#include<al原创 2016-12-27 22:59:26 · 680 阅读 · 0 评论 -
[POJ3294]Life Forms(后缀数组+二分)
题目描述传送门题解将 n 个字符串连起来,中间用不相同的且没有出现在字符串中的字符隔开,求sa和height。然后二分答案,将后缀分成若干组,每一组的height都不小于mid,判断每组后缀是否出现在不小于 k=n/2+1 个的原串中。注意: ①n=1的时候要特判 ②每一个height都不能超过它本身表示的字符串的长度代码#include<iostream>#include<cstring>原创 2016-12-27 20:12:05 · 767 阅读 · 0 评论 -
[BZOJ3277]串(后缀数组+二分+st表)
题目描述传送门题解orz hxy sam随便艹 不过我感觉这道题用sa的做法非常厉害吖 由于每一个子串一定是某一个后缀的前缀,所以可以对于每一个后缀求其对答案能贡献多少个子串,也就是这个后缀有多少个满足题意的前缀。同时可以发现,对于同一个后缀SiS_i,如果Si,jS_{i,j}满足题意那么Si,i...Si,jS_{i,i}...S_{i,j}都满足题意,也就是说这个贡献的值也是满足单调性的,原创 2016-12-27 18:59:14 · 1167 阅读 · 0 评论