hdu 3622 二分+2-SAT判定】的更多相关文章

思路:如题 #include<iostream> #include<algorithm> #include<cstring> #include<cstdio> #include<cmath> #define Maxm 100010 #define eps 1e-4 using namespace std; ],head[],e,n,m,id[],lab,num,dfn[],low[],Stack[],top; double Max; struct…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3622 思路:二分是容易想到的,由于题目中有明显的矛盾关系,因此可以用2-sat来验证其可行性.关键是如何建图:对于每两对炸弹的(u,u')和(v,v'),如果u,vi的距离小于2*mid,则连边u->v',v->u‘.然后强连通判断可行性. http://paste.ubuntu.com/5972769/…
题意: 就是给出n对坐标,每对只能选一个,以选出来的点为圆心,半径自定义,画圆,而这些圆不能覆盖,求半径最小的圆的最大值 解析: 看到最x值最x化,那二分变为判定性问题,然后...然后我就没想到... 好的吧...2-sat 还能在不是一对的两个值之间建边...求出连通分量后  看一对中的两个坐标是否在一个连通分量中 在一个说明半径太小 要加大  反之..反之. 因为涉及小数 要用eps #include <iostream> #include <cstdio> #include…
/* 二分+2-sat 题意:在一个二维平面上给你n个炸弹,和2*n个位置,每一行的两个位置只能有一个放炸弹 现在炸弹爆炸有一个半径,当炸弹爆炸时两个炸弹的半径化成的圆不能相交,求最大半径 二分半径, 每次如果一个炸弹可放的两个位置中的一个与其他位置有矛盾,就进行建边,最后判断是否存在这样一组解 即可. */ #include<stdio.h> #include<string.h> #include<math.h> #define eps 1e-5 #define N…
Bomb Game Time Limit: 10000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 5396    Accepted Submission(s): 1925 Problem Description Robbie is playing an interesting computer game. The game field is an unbounde…
HDU 3622 Bomb Game 题目链接 题意:求一个最大半径,使得每一个二元组的点任选一个,能够得到全部圆两两不相交 思路:显然的二分半径,然后2-sat去判定就可以 代码: #include <cstdio> #include <cstring> #include <cstdlib> #include <vector> #include <cmath> #include <algorithm> using namespace…
http://acm.hdu.edu.cn/showproblem.php?pid=3622 二分答案转化成2-sat问题. 上午测试时总想二分后把它转化成最大点独立集但是不会写最大点独立集暴力又秘制写错所以就爆零啦--- #include<cmath> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int N = 503; double x…
转自:http://www.cnblogs.com/kuangbin/archive/2012/08/23/2653003.html   一种是直接根据公式计算的,另外一种是二分算出来的.两种方法速度都很快,充分体会到二分的效率之高啊~~~   题目中一个很重要的条件就是 (Lx*Lx+Ly*Ly) < vD*vD < vB*vB , 这样说明一定是可以追上的,而且可以以最大的距离射中,所以第一问的答案一定就是L的. 假设追击者跑的时间是 t1,那么肯定子弹飞行时间就是 L/vB 了 那么此时…
HDU 3586 『Link』HDU 3586 『Type』二分答案+树形DP判定 ✡Problem: 给定n个敌方据点,1为司令部,其他点各有一条边相连构成一棵树,每条边都有一个权值cost表示破坏这条边的费用,叶子节点为前线.现要切断前线和司令部的联系,每次切断边的费用不能超过上限limit,问切断所有前线与司令部联系所花费的总费用少于m时的最小limit.第一行输入的n,m;之后是n-1条边,我们要求最小的limit.\(1\leq n\leq 1000,1\leq m\leq 10^6\…
题意:有一个游戏,有n个回合,每回合可以在指定的2个区域之一放炸弹,炸弹范围是一个圈,要求每回合的炸弹范围没有重合.得分是炸弹半径最小的值.求可以得到的最大分数. 思路:二分+2SAT. 二分炸弹范围,再根据有无重合建图,用2SAT判定. #include <cstdio> #include <cmath> #include <vector> #include <cstring> using namespace std; ; struct TwoSAT {…
Fire station Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1308    Accepted Submission(s): 434 Problem Description A city's map can be seen as a two dimensional plane. There are N houses in…
Bomb Game Time Limit: 10000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2951    Accepted Submission(s): 984 Problem Description Robbie is playing an interesting computer game. The game field is an unbounded…
用read()会挂 二分半径,显然最优的是所有原都用这个最小半径,然后2-SAT把相交的圆建图,跑tarjan判一下可行性即可 #include<iostream> #include<cstdio> #include<cstring> #include<cmath> using namespace std; const int N=205; int n,h[N],cnt,dfn[N],low[N],tot,s[N],top,bl[N],col; bool v…
题目大意:玩一个放炸弹游戏,有N次放炸弹的机会,每次放炸弹时,你都有两个位置能够选择.问怎样放炸弹,能使爆炸的炸弹的半径的最小值最大(炸弹爆炸半径能够控制,可是爆炸形成的圈不能有重叠部分) 解题思路:最小值最大,二分 二分半径,假设有不满足的点,就建立起限制边.接着推断是否能完毕染色就可以 #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> #include &…
http://acm.hdu.edu.cn/showproblem.php?pid=5699 此题满足二分性质,关键在于如何判断当前的时间值可以满足所有的运送方案中的最长的时间. 对于每一次枚举出的k,对于朴素时间就不大于这个值的方案显然满足,剩下的方案耗费的时间都大于k,换句话说剩下的方案如果想满足k就必须要通过传送点,才有可能实现. 对于 (Li,Ri)  通过传送点(L,R)的时间就是   abs(Ri-R)+abs(Li-L) 传送点与路径的情况有四种 L_________R      …
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1815 题意:给出n个牛棚.两个特殊点S1,S2的坐标.S1.S2直连.牛棚只能连S1或S2,还有,某些牛棚只能连在同一个S,某些牛棚不能连在同一个S.求使最长的牛棚间距离最小 距离是曼哈顿距离,使最大值最小. 思路:二分的经典应用,二分枚举最大值limit,然后重新构图,用2-SAT判定可行性.用Xi表示第i个牛棚连到S1,~Xi表示连到S2,检查每一个约束条件,构图: 1.hate关系的i,j X…
这道逼题!感受到了数学对我的深深恶意(#‵′).... 1822: [JSOI2010]Frozen Nova 冷冻波 Time Limit: 10 Sec Memory Limit: 64 MB Submit: 1282 Solved: 382 [Submit][Status][Discuss] Description WJJ喜欢"魔兽争霸"这个游戏.在游戏中,巫妖是一种强大的英雄,它的技能Frozen Nova每次可以杀死一个小精灵.我们认为,巫妖和小精灵都可以看成是平面上的点.…
首先我们可以二分一个答案时间T,这样就将最优性问题 转化为了判定性问题.下面我们考虑对于已知的T的判定 对于矩阵中所有的空点bfs一次,得出来每个点到门的距离, 然后连接空点和每个能在t时间内到达的门一条边,容量为1, 之后连接源和每个空点一条边,容量为1,门连接汇边,容量为t. 判断最大流是否满流就好了. /**************************************************************     Problem:     User: BLADEVIL…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1669 思路:由于要求minimize the size of the largest group,由此我们想到二分枚举,然后每一次求一下多重匹配就可以了. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<vector> using n…
题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=4004 题目意思是青蛙要过河,现在给你河的宽度,河中石头的个数(青蛙要从石头上跳过河,这些石头都是在垂直于河岸的一条直线上) 还有青蛙能够跳跃的 最多 的次数,还有每个石头离河岸的距离,问的是青蛙一步最少要跳多少米可以过河> 这是一道二分加贪心的题,从0到的河宽度开始二分,二分出一个数然后判断在这样的最小步数(一步跳多少距离)下能否过河 判断的时候要贪心 主要难在思维上,关键是要想到二分上去,能想到…
http://acm.hdu.edu.cn/showproblem.php?pid=5046 n城市建k机场使得,是每个城市最近机场的距离的最大值最小化 二分+DLX 模板题 #include <cstdio> #include <cstdlib> #include <cmath> #include <cstring> #include <string> #include <queue> #include <vector>…
首先我们二分一个答案mid,在判定是否能举办mid次,那么对于每个次我们可以用最大流根据是否满流(流量为n*mid)来判定,对于每个点我们拆成两个点,分别表示这个人要和他喜欢和不喜欢的人一起跳舞,那么添加源点source,汇点sink,设i为男生,j为女生,那么连接<source,i,mid>表示这个人要跳mid次,同理连接<j,sink,mid>,这样我们保证了每个人都是跳了mid次舞,那么对于每一对儿喜欢关系i,j,连接<i,j,1>,对于不喜欢的i,j连接<…
Marriage Match III Time Limit: 10000/4000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1971    Accepted Submission(s): 583 Problem Description Presumably, you all have known the question of stable marriage match.…
Marriage Match II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3558    Accepted Submission(s): 1158 Problem Description Presumably, you all have known the question of stable marriage match. A…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1816 思路:首先将每把钥匙i拆成两个点i和i+2n,分别表示选与不选,对于被分成n对的钥匙,由于只能选择其中的一把,所以加边(i,j+2n),(j,i+2n)对于每道门所对应的两把钥匙,两边中选一把,当i不选时,则必须选择j.反之,同理.所以加边(i+2n,j),(j+2n,i).二分所能打开门的数量,再用2-sat来判断可行性 . http://paste.ubuntu.com/5976255/…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3715 思路:二分深度,2-sat判断可行性,根据矛盾关系建图:设a=0,a'=1,b=0,b'=1;如果c[i]==0,则a,b矛盾,连边a->b',b->a';如果c[i]==1,则a,b'矛盾,连边a->b,b’->a',a',b矛盾,连边a'->b',b->a;如果c[i]==2,则连边a'->b,b'->a,然后就是强连通判断即可. http://pas…
不知道后缀数组的请退回去! 题面: 题目描述 很久很久以前,森林里住着一群跳蚤.一天,跳蚤国王得到了一个神秘的字符串,它想进行研究.首先,他会把串分成不超过 k 个子串,然后对于每个子串 S,他会从S的所有子串中选择字典序最大的那一个,并在选出来的 k 个子串中选择字典序最大的那一个.他称其为“魔力串”.现在他想找一个最优的分法让“魔力串”字典序最小. 输入格式 第一行一个整数 k,k≤15 接下来一个长度不超过 10^5的字符串 s. 输出格式 输出一行,表示字典序最小的“魔力串”. 样例 输…
T - zxa and leaf HDU - 5682 题目大意是:给你一颗树,这棵树有些节点已经设置了它的美丽值,然后剩下一些节点需要我们设置美丽值. 一条边的丑陋程度等于被定义为由这个边缘连接的两个节点之间的美丽水平的绝对差异 一棵树的丑陋程度则是边的丑陋程度的最大值. 这个题目应该是二分这个丑陋值. 然后dfs来判断这个丑陋值是不是合理. #include <cstdio> #include <cstring> #include <cstdlib> #includ…
LINK:排序 此题甚好我一点思路都没有要是我当时省选此题除了模拟我恐怕想不到还可以二分 还可以线段树... 有点ex 不太好写 考虑 暴力显然每次给出询问我们都是可以直接sort的 无视地形无视一切直接sort .复杂度mnlogn 30分到手. 考虑更为优秀的做法 桶排序 每次排序都是O(n)总体复杂度 nm 50分到手 考虑 不模拟做题 不断排序肯定是行不通的 如何 改变问题模型是关键之处. 然鹅 很难想到解法 思路引导一下 0 1 序列线段树树是很容易支持排序的 区间修改区间查询即可.再…
Description \(n\) 个炸弹,每个炸弹有两个放置点,可以任选一个,问你最大的半径是多少. Sol 二分+2-SAT+Tarjan. 首先二分一下答案.然后就成了一个2-SAT问题. 建模就是, \(i\) 如果和 \(j\) 的距离超过 \(x*2\),那么 \(i\) 只能选择 \(j\) ^ \(1\) 连边,同时 \(j\) 只能选择 \(i\) ^ \(1\) 连边. 最后用Tarjan所以下环,如果两个点在一个环中,那么就不合法. Code #include <bits/…