二分
zhouyuyang233
此乃ZJ之蒟蒻也
望大牛勿喷
我等蒟蒻感激不尽
展开
-
bzoj1414: [ZJOI2009]对称的正方形
传送门 显然是可以用manacher驶过去的。 首先为了避免边长奇偶性带来的问题, 我们要把矩阵扩大二倍: 然后开始闷声做大死系列:哈希+二分答案。 把这个矩阵从四个角各哈希一遍 对于每个点二分答案 验证时将四个哈希值全都取出来对比即可 然后只枚举i+j为偶数的点 得到的边长除以2就是以这个点为中心的正方形回文子矩阵数量 记得二维哈希的时候横竖的BASE值不能相同,用unsigned原创 2017-04-29 14:47:29 · 625 阅读 · 0 评论 -
bzoj1851: Pku2759 Distributing tasks
传送门 显然二分答案,考虑如何验证 首先覆盖方案一定是可以分成若干个不能再分割的小的宽度为2的矩形的。 我们可以用two pointerO(N)求出这个点最多向左的个数。 然后分两种情况: 1.一个人做两行。 2.一群人做第一行,另一群做第二行。 这样子时间复杂度是O(N*M)的(最多跳M次) 总时间复杂度O(N*M*logAi)#include<cmath>#include<cs原创 2017-06-24 21:35:01 · 325 阅读 · 0 评论 -
bzoj1822: [JSOI2010]Frozen Nova 冷冻波
传送门 先用计算几何判断某个巫师是否能够施法到某个小精灵。 然后二分答案,用网络流验证就可以了。#include<cstdio>#include<cstdlib>#include<cmath>#include<cstring>#include<iostream>#include<algorithm>#define eps 1e-10#define inf 0x3f3f3f3f#d原创 2017-06-21 21:14:08 · 220 阅读 · 0 评论 -
bzoj1532: [POI2005]Kos-Dicing
传送门 网络流模板+二分验证。 S->比赛 1 比赛->参加比赛的人 1 每个人->T inf 判断最大流是否是m即可。#include<cmath>#include<cstdio> #include<cstring>#include<cstdlib>#include<iostream>#include<algorithm>#define N 10005using names原创 2017-06-02 21:43:16 · 247 阅读 · 0 评论 -
bzoj1514: [POI2006]ZAB-Frogs
传送门 显然在求出最短距离之后是可以二分答案的。 我们考虑按照每列来计算每个点的最短距离。 显然可以发现,对于该列来说,每一行都可能有一个到该列最近的点,并且我们发现,如果某一行有两个坏点的话,假设分别为A,B,并且A到该列的距离最近,那么B显然不会对这一列的dis有任何影响。 所以我们显然可以在求之前预处理一下每一行的如果存在坏点的那个最近的坏点的坐标。 接下来,我们讨论坏点k,l原创 2017-06-01 18:55:11 · 384 阅读 · 0 评论 -
bzoj1816: [Cqoi2010]扑克牌
传送门 二分答案。判断是否可行就可以了。 至于判断,自己yy。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cstdlib>#include<cmath>#define N 1000005using namespace std;int a[55],n,l,r,m,mi;原创 2017-06-16 21:46:13 · 422 阅读 · 0 评论 -
bzoj1567: [JSOI2008]Blue Mary的战役地图
传送门 二分答案+哈希。 二分边长,哈希判断是否相等。 注意,行/列上计算key时乘的数应不同。#include<cstring>#include<cmath> #include<cstdio> #include<iostream> #include<cstdlib> #include<algorithm>#include<map>#define ll long lo原创 2017-05-05 16:04:06 · 435 阅读 · 0 评论 -
bzoj1305: [CQOI2009]dance跳舞
传送门 拆点网络流+二分答案。 将每一个人拆成ix和iy 如果男女互相喜欢,则在x节点之间加边。 否则在y节点之间加边。(边权为1) 然后男生从x连向y,女生从y连向x,连流量为k的边。 从原点向男生的x节点连流量为a的边。 从女生的x节点向汇点连流量为a的边。 然后二分答案a,判断是否满足n*a==maxflow即可。#include<cstring> #include<cma原创 2017-04-22 17:23:51 · 372 阅读 · 0 评论 -
bzoj4538: [Hnoi2016]网络
传送门 本来想用树剖艹,然而并不会卡常数这种神奇的技能,,,于是还是乖乖写正解吧QAQ 我们可以把一个询问转化为二分判定性问题 二分答案K ,若所有权值大于K的路径都经过询问点x,则答案比K小,否则答案比K大 对于多组询问,外层再套一个整体二分就行了 至于判断有几条路径经过点x ,对于一条路径(u,v)我们把u和v置为1,lca(u,v)和lca(u,v)的父亲置为−1,这样经过一个节原创 2017-04-21 14:36:08 · 632 阅读 · 0 评论 -
bzoj1486: [HNOI2009]最小圈
传送门 显然是要二分答案的。 然后爆枚起点,用dfs版的spfa判负环就ok辣。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cstdlib>#include<cmath>#define N 3005#define ll long longusing namespace原创 2017-05-01 21:05:16 · 235 阅读 · 0 评论 -
bzoj1926: [Sdoi2010]粟粟的书架
传送门 对于第一问(R,C<=200); 预处理f[x][y][k],s[x][y][k].表示从(1,1)到(x,y)中大于等于k的数的和与大于等于k的数的个数。 然后二分最小的数即可。 对于第二问(R=1): 我们还是二分最小数。 判断就变成了询问一段区间内大于等于x的数的和以及它们的个数。 显然主席树可以处理这个#include<iostream>#include<cstdio原创 2017-07-13 21:49:24 · 231 阅读 · 0 评论