
二分
huanghongxun
这个作者很懒,什么都没留下…
展开
-
HDU 3585 Maximum Shortest Distance 最大团 二分答案
平面上有N个点,确定k个点使其中各点对距离的最小值最大。有多组数据。这个最优化问题本身似乎不好解决,所以还是二分一下吧。。如果已知距离的最小值mid,判定是否存在k个点且两两距离均超过mid。将距离超过mid的点连起来求一下最大团即可。二分的时候跪了。。判断二分结束的条件r - l > 1e-4,写1e-3就WA了。。这个故事告诉我们不要吝啬。。开够保证正确性为好。原创 2016-02-11 14:15:36 · 1061 阅读 · 0 评论 -
POJ 3273 USACO 2007 Mar Monthly Expense 二分答案
长度为n的序列分成m块是每块数字之和的最大值最小。 二分答案。 如果按给定和的最大值依次分超过了m块,数字就小了。 否则数字就大了。 正确性怎么证都行。。#include <cstdio>int main() { static int d[100005]; int n, m, i, ma, s, l, r, mid, c; while (scanf("%d%d",原创 2016-03-26 23:49:45 · 703 阅读 · 0 评论 -
POJ 2112 Optimal Milking 最大流 二分答案
有K个能挤M头奶牛的挤奶机和C头奶牛,告诉一些挤奶机和奶牛间距离,求最优分配方案使最大距离最小。显然是二分答案。接下来考虑如何判定。 为了限制挤奶机发给m头牛,以及一头牛只能分配给1台挤奶机,源点连向挤奶机,容量m,牛连向汇点,容量1,距离小于二分的最大距离的 挤奶机-牛 对,连边,容量1(其实设成多大都无所谓的),跑出来最大流=c(满流?)说明方案可行。#include <cstdio>#in原创 2016-04-09 10:09:13 · 689 阅读 · 0 评论 -
POJ 2455 Secret Milking Machine 最大流 二分答案
源汇为1,n的无向图求最小的路径上最大边使存在T条不重叠的路连通源汇。显然二分答案最大边长,判定时只加入满足最大边长的边。注意是无向边。。数据:http://contest.usaco.org/FEB05_6.htm#include <cstdio>#include <cstring>#include <algorithm>#define FOR(i,j,k) for(i=j;i<=k;++i原创 2016-04-09 10:42:15 · 722 阅读 · 0 评论 -
POJ 3968|UVALive 4992|HDU 3761|UVA 1475|Jungle Outpost|二分|半平面交
有n个瞭望台,形成一个凸的n多边形。瞭望台的保护范围就是凸多边形内。敌人进攻会炸毁一些瞭望台使得总部暴露在剩下瞭望台凸包之外。你的任务是选择一个点作为总部使得最少需要炸坏的瞭望台总数尽可能多。输出此时敌人需要炸毁的瞭望台数量。vjudge真是个好地方,4倍经验唾手可得一开始想了个O(n2)O(n^2)的真是作死。。 嗯nn这么大应该是O(nlogn)O(n\log n)的。 二分答案。原创 2016-04-26 10:03:10 · 928 阅读 · 0 评论 -
URAL 1841|Cableways|...
二维空间中存在若干条连续的折线,折线方向从左下到右上或者右下到左上。一个人沿着这个折线走从下方走到上方。每条折线上可能会有可以直达上方最近折线的线,这种线只能通往最近上方折线,而且走这条线只是y坐标增加。走折线需要一定时间,走直上的线也需要一定的时间。求最少时间到达折线y坐标最大的点。求第K大。。偷懒并没有写平衡树又写了二分+树状数组。。#include <cstdio>#include <cst原创 2016-04-24 21:59:58 · 465 阅读 · 0 评论 -
URAL 1849|Rabbit Hunt 2|计算几何|二分|Set
待续#include <cstdio>#include <algorithm>using namespace std;#define FOR(i,j,k) for(i=j;i<=k;++i)#define rep(i,j,k) for(i=j;i<k;++i)const int N = 10005;struct Data { int x, y; Data(int a =原创 2016-04-24 17:53:00 · 799 阅读 · 0 评论 -
UOJ 150|NOIP 2015 Day 2|运输计划|LCA
给出N点树和M条树上简单路径,求将一条边的边权改为0后使M条路径中最长的最短,求修改后最长路径的长度。题目描述来看容易想到二分答案,当我们二分长度时,显然不需要考虑比二分的答案要短的路径,对于长的路径,我们只能修改一条边的长度,因此这条边必须在较长路径中都出现,即这些路径的路径交上的边。 考虑序列上的区间交的求法,即在两端点打标记,那么将某个区间归属于其左端点,求前缀和后若某端点的前缀和=区间数量原创 2016-07-21 12:05:03 · 1472 阅读 · 0 评论 -
POJ 2749|Building roads|2-SAT|二分答案
#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>using namespace std;#define rep(i,j,k) for(i=j;i<k;++i)#define ms(i) memset(i,0,sizeof(i))const int N = 20005, M = 600000;原创 2016-03-27 00:11:07 · 667 阅读 · 0 评论 -
CodeForces #379(734A|734B|734C|734D|734E|734F)|二分查找|模拟|树的半径|位运算
734A: Anton and Danik题目大意给定字符串中,D多输出Danik,A多输出Anton,一样多输出Friendship题解#include <cstdio>char s[100005];int main() { int n, i, d = 0, a = 0; scanf("%d%s", &n, s); for (i = 0; i < n; ++i)原创 2016-11-16 17:58:43 · 1931 阅读 · 0 评论 -
POJ 2296 Map Labeler 2-SAT 二分
有n个点,只能位于某个正方形的上或下边的中点上,所有正方形边长相等且不重叠,求最大边长。 二分答案。 如果某两个点的x坐标不小于边长就无所谓。 如果小于,就得考虑在上面下面的问题。 如果y坐标小于边长,那么就必须一个放上一个放下; 如果相等,一个上一个中,一个中一个下; 如果小于两倍边长,那么上、中上、中下、下。#include <cstdio>#include <cstring>#原创 2016-03-26 23:17:12 · 382 阅读 · 0 评论 -
HDU 3715 Go Deeper 2-SAT 二分答案
if dep<m and x[a[dep]]+x[b[dep]]!=c[dep] then go(dep+1,n,m) 意思就是说,对于dep=0~m-1,有所有的不等式都成立。 而c[dep]只有3种取值取0时,x[a[dep]]和x[b[dep]]不同时为0取1时,x[a[dep]]和x[b[dep]]不为0和1或1和0取2时,x[a[dep]]和x[b[dep]]不同时为1于是2-原创 2016-03-25 22:56:46 · 599 阅读 · 0 评论 -
BZOJ 2502 清理雪道 有上下界的网络流
求DAG最少用多少条链覆盖完。 建立源汇连接入出度为0的点。 然后对于每条边,下界为1,上界为无穷大。 跑一次有上下界的最小流即可。 二分答案转化为判定性问题。 由于建立了超级源汇以后要建一条反向边,上界为总流量。 于是二分答案即可,判定转化以后的无源汇上下界网络流是否存在可行流即可。代码写的有点复杂了。求建议?#include <cstdio>#include <cstring>#原创 2016-03-15 22:42:05 · 480 阅读 · 0 评论 -
POJ 3621 Sightseeing Cows 01分数规划
找出一个环使得其点权和比边权和最大。 即 max∑vi∑ei\max \frac{\sum v_i}{\sum e_i} 既然是分数规划,令答案为a,有 a≥∑vi∑eia\geq \frac{\sum v_i}{\sum e_i} 变形 a×∑ei≥∑via\times \sum e_i\geq \sum v_i ∑(a×ei−vi)≥0\sum(a\times e_i-v_i)\g原创 2016-03-03 16:14:30 · 494 阅读 · 0 评论 -
机房水题欢乐赛 2016-02-17
考试时题面用pdf格式给却不是latex生成的,严重吐槽T1: 数字给你N个数,编号1~N,从某个区间[L,R]中,任意选择二个数字,它们相同的概率是多少。Input第一行一个整数N 接下来一行,N个整数。 第三行一个整数M,表示询问次数。 接下来M行,每行两个整数L,ROutputM行,每行一个分数,表示两个数字是相同的概率,必须为最简分数。Sample Input6 41 2 3 3 3原创 2016-02-17 16:56:16 · 430 阅读 · 2 评论 -
BZOJ 2097 USACO 2010 Dec Gold Exercise 奶牛健美操 二分答案 树形DP 贪心
感觉跟BZOJ 2067 POI 2004 szn有点关联。 二分答案ans。 对于每个点,如果子树中存在超过ans的链就砍掉。剩余的差不多了。#include <cstdio>#include <algorithm>const int N = 100005, M = N * 2;using namespace std;int e = 0, h[N], v[M], p[M], mid,原创 2016-03-12 15:11:26 · 1104 阅读 · 0 评论 -
BZOJ 2067 POI 2004 SZN 树形DP 贪心 二分答案
POI标程。。。明明OI代码写成OI风格就好了嘛,干嘛写成产品代码。。好好的代码强行拉到200+行而且思路也不紧凑了。。话说都这么 滥用 STL么。。首先最长的线最短可以多少,显然可以二分答案。然后如何判定ans?令gig_i表示以i为根的子树中所有路径长度不超过ans时连向i祖先的路径的最小长度,于是当grt≤ansg_{rt}\leq ans时ans可行。 然后有gi=gj+1g_i=g_j+原创 2016-03-11 14:20:24 · 1254 阅读 · 0 评论 -
BZOJ 1044 HAOI 2008 木棍分割 二分 贪心 动态规划
真是心烦。。似乎一个sb用脚本拼命交30s的while(1)程序卡评测。。这种缺智商的大抵也就会卡oj了。明明有80s的250s的去卡30s的第一问 二分贪心即可得到答案max_cut。 第二问 令f[i][j]f[i][j]表示前i根切j次的方案数。那么显然有 f[i][j]=∑f[k][j−1](a[k+1]+⋯+a[i]≤max_cut)f[i][j]=\sum f[k][j-1](a[k原创 2016-03-12 20:36:51 · 695 阅读 · 0 评论 -
BZOJ 1863 ZJOI 2006 皇帝的烦恼 二分答案
一个简单骗分就是ans=max{a1+an,ai+ai+1}ans=\max\{a_1+a_n,a_i+a_{i+1}\}。经测试50分。。。似乎有人多对了一个点,不知道有啥特别的技巧? 不妨考虑一下如何判定答案ans,即1与n的最小冲突个数是否为0。 令mi[i]表示1与i的最小冲突个数,ma[i]表示1与i的最大冲突个数。那么有: 最多能冲突那么就是全部都冲突了或是分了上一个冲突了的。原创 2016-02-28 11:04:04 · 971 阅读 · 0 评论 -
BZOJ 3761 甄嬛 二分答案
由于分类的关系强行开个新帖。。C有内存加成,1040KB->980KB。暂时Rank 8.题解参见:http://blog.youkuaiyun.com/huanghongxun/article/details/50759196#include #define min(i,j) ((i)<(j)?(i):(j))#define max(i,j) ((i)>(j)?(i):(j))#d原创 2016-02-28 11:32:42 · 1107 阅读 · 0 评论 -
HDU 3622 Bomb Game 2-SAT 二分答案
一个游戏,Robbie每轮有2个格子可以选一个放置相同的炸弹,爆炸半径可控,但前提是炸弹爆炸范围(即圆)不能相交,求最大半径。似乎转化为判定性问题好做些。 二分爆炸范围。 如果两个格子欧几里得距离小于二倍的半径就不能同时选,连边即可。#include <cstdio>#include <memory.h>#include <cmath>#include <algorithm>using原创 2016-03-25 22:20:30 · 430 阅读 · 0 评论 -
HDU 4543|三足鼎立|曼哈顿距离|二分答案
三足鼎立Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Problem Description “纷纷世事无穷尽,天数茫茫不可逃。鼎足三分已成梦,后人凭吊空牢骚。” 三国的各种传奇故事被千百年传诵,为人们津津乐道。魏、蜀、吴三个势力相互制约,同时也相互利用,“三”的神奇和精妙尽在其中原创 2017-07-11 15:57:54 · 634 阅读 · 0 评论