hdu3622】的更多相关文章

hdu3622 题意 每回合给定两个坐标点,可以选择一个放置炸弹,自己决定炸弹的半径,问 n 个回合后,使炸弹半径最小值最大. 分析 存在对立关系:每回合只能选择一个地方放置炸弹.i 表示 第一个位置 i + n 表示第二个位置. 当 i .j 存在交点时,i -> j + n,j -> i + n . code #include<cstdio> #include<cstring> #include<iostream> #include<algorit…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3622 题意:一个平面上有很多的炸弹,每个炸弹的爆炸范围是一样的,求最大的爆炸范围使得炸弹之间不相互影响. 二分爆炸范围,然后建立2sat模型,看是否存在解. //STATUS:C++_AC_171MS_972KB #include <functional> #include <algorithm> #include <iostream> //#include <ext…
传送门:Bomb Game 题意:给n对炸弹可以放置的位置(每个位置为一个二维平面上的点),每次放置炸弹是时只能选择这一对中的其中一个点,每个炸弹爆炸的范围半径都一样,控制爆炸的半径使得所有的爆炸范围都不相交(可以相切),求解这个最大半径. 分析:二分距离,由two-sat判可行性,建图时对于每两个炸弹的两个位置,互相判断一下是否冲突,冲突就建边. #include <cstdio> #include <cstring> #include <string> #inclu…
Bomb Game Time Limit: 10000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 5647    Accepted Submission(s): 2036 Problem Description Robbie is playing an interesting computer game. The game field is an unbounded…
给n<=100对点,从每对点里面挑一个并以这些挑出的点为圆心画圆,并且这些圆不能互相覆盖,找出一种方案使得这些圆半径中最小的那个最大. “最小值最大”就是二分答案啦!考虑现在每个点都画出半径x的圆,如何选点呢? 可以发现选了一个点P之后与其距离相差2x内的点Q都不能被选,也就是“与P在同一对的另一个点P'    或    与Q在同一对的另一个点Q'” 有了或语句描述选点冲突,接下来就是2-SAT构图啦! #include<cstdio> #include<cstring> #…
/*2-sat问题初破!题意:每一对炸弹只能选一个(明显2-sat),每个炸弹半径自定,爆炸范围不可 相交,求那个最小半径的最大值(每种策略的最小半径不同).思:最优解:必然是选择的点最近 的俩个距离/2,其他半径大小无纺,不妨设他们都为该最小半径.求最小值最大,二分答案,每次判定 R是否可行,可行就往大的搜索,注意精度r-l<10^-4才可过.该题不需要输出方案,只需判定是否矛盾的 点在同一个SCC中即可.*/ #include<iostream> //G++ 343ms,/c++,8…
题意 给n对炸弹可以放置的位置(每个位置为一个二维平面上的点), 每次放置炸弹是时只能选择这一对中的其中一个点,每个炸弹爆炸 的范围半径都一样,控制爆炸的半径使得所有的爆炸范围都不相 交(可以相切),求解这个最大半径. 题解 首先二分最大半径值,然后2-sat构图判断其可行性,对于每 两队位置(u,uu)和(v,vv),如果u和v之间的距离小于2*id,也就是说位置u和位置v处不能同时防止炸弹(两范围相交),所以连边(u,vv) 和(v,uu),求解强连通分量判断可行性. 注意精度问题 #inc…
题意:      给你N组炸弹,每组2个,让你在这N组里面选取N个放置,要求(1)每组只能也必须选取一个(2)炸弹与炸弹之间的半径相等(3)不能相互炸到对方.求最大的可放置半径. 思路:      二分去枚举半径,然后用2sat去判断是否可行,在2sat里,每组炸弹的两个是正常对,任何两组的任何两个距离小于等于mid那么这两个是矛盾对.这样强连通缩短,然后判断有没有一组是在同一个强连通块里的,没有那么就ok继续更新二分查找答案. #include<stdio.h> #include<st…
hdu3622:http://acm.hdu.edu.cn/showproblem.php?pid=3622 题意:你有n次,每次你可以在平面上放置一个点,并且每一次都会有两个位置可以选,每一次只能选择其中一个.然后在自己位置上以该点为圆心画圆,这n个圆不能相交,问你最后最小的圆的半径的最大值是多少. 题解:二分+2-sat.对于2-sat的建图始终很迷糊.这里的一次有两个点,并且每一次能选择其中一个,这就相当于把n个点弄成了2*n点.如果i--j距离太近 ,则建边i-->~j,j—>~i.…
参考blog 参考论文 参考论文 题目 & 题解 裸2-SAT poj3683 poj3207 poj3678 poj3648 2-SAT + 二分法 poj2723 poj2749 hdu3622 hdu3715 一点总结 寻找对立关系,一般是每回合(每次)只能选择2个中的一个,且另一个不能选择了. 连边.x -> y 表示 若 x 为真,则 y 为真,那么在寻找 边的关系时,保证若 x 为真,则只有一个确定的 y 为真(也就是只能建一条边) 例如,x or y , 表示 x' ->…