|Hdu 3622|2-SAT|二分|Bomb Game
来源:互联网 发布:淘宝上的优惠券在哪领 编辑:程序博客网 时间:2024/05/17 01:29
Hdu传送门
/* hdu 3622 二分后2-SAT判断 本题教训: 1、2-SAT加边视情况加 2、浮点数二分查找的写法 3、浮点数的eps最好开多一点,防卡精度 */#include<cstdio>#include<cstring>#include<vector>#include<cmath>#include<algorithm>#define ll long long#define db double#define ms(i,j) memset(i,j)#define INF 100000000#define llINF 1LL<<60using namespace std;const int MAXN = (100 + 5) * 2;struct TwoSat{ int mark[MAXN*2]; int S[MAXN*2]; vector<int> G[MAXN*2]; int n, c; int init(int ni) { n = ni; for (int i=0;i<=n*2;i++) { mark[i] = false; G[i].clear(); } } int dfs(int u) { if (mark[u^1]) return false; if (mark[u]) return true; mark[u] = true; S[++c] = u; for (int i=0;i<G[u].size();i++) { if (!dfs(G[u][i])) return false; } return true; } int solve() { for (int i=0;i<n*2;i+=2) if (!mark[i]&&!mark[i+1]) { c = 0; if (!dfs(i)) { while (c>0) mark[S[c--]] = false; if (!dfs(i+1)) return false; } } return true; }}ts;int n;int xi[MAXN], yi[MAXN];db dis(int x, int y){ return sqrt(1.0*(xi[x]-xi[y])*(xi[x]-xi[y]) + (yi[x]-yi[y])*(yi[x]-yi[y]));}int init(){ for (int i=0;i<n;i++) { scanf("%d%d%d%d", &xi[i], &yi[i], &xi[i+n], &yi[i+n]); }}int solve(){ db l = 0.0, r = 40000.0; db ans = 0; for (int i=0;i<100;i++) { db mid = (l+r)/2.0; ts.init(n); for (int i=0;i<n;i++) for (int j=i+1;j<n;j++) { int x = i*2, y = j*2; if (dis(i,j)+0.0000001<mid*2) { ts.G[x].push_back(y^1); ts.G[y].push_back(x^1); } if (dis(i,j+n)+0.0000001<mid*2) { ts.G[x].push_back(y); ts.G[y^1].push_back(x^1); } if (dis(i+n,j)+0.0000001<mid*2) { ts.G[x^1].push_back(y^1); ts.G[y].push_back(x); } if (dis(i+n,j+n)+0.0000001<mid*2) { ts.G[x^1].push_back(y); ts.G[y^1].push_back(x); } } if (ts.solve()) { ans = l = mid; } else r = mid; } printf("%.2f\n", ans);}int main(){ while (scanf("%d", &n)==1) { init(); solve(); } return 0;}
0 0
- hdu 3622 Bomb Game#2-sat+二分
- hdu 3622 Bomb Game (二分+2-sat)
- HDU 3622 Bomb Game(2-SAT+二分)
- HDU 3622 Bomb Game (二分+2-SAT)
- HDU 3622 Bomb Game 二分 + 2-sat
- hdu 3622 Bomb Game(二分+2-sat)
- |Hdu 3622|2-SAT|二分|Bomb Game
- Hdu 3622 Bomb Game 2-SAT+二分
- hdu 3622 Bomb Game(二分+2-sat判定)
- HDU 3622 Bomb Game( 二分查找+2-SAT )
- HDU 3622 Bomb Game(2-SAT + 二分)
- hdu 3622 Bomb Game(2-sat,二分,4级)
- HDU 3622 Bomb Game (二分+2-sat,4级 )
- hdu 3622 Bomb Game(2-SAT 二分)
- HDU 3622 Bomb Game(二分+2-sat)
- hdu 3622 Bomb Game(2-SAT,二分)
- HDU 3622 Bomb Game(2-SAT+二分)
- HDU - 3622 Bomb Game(二分+2-SAT)
- wamp环境使用
- 如何生成静态页面的五种方案
- 一个封装了 7z 压缩解压功能的接口
- CodeForces 761D Dasha and Very Difficult Problem
- HDU1269迷宫城堡(Tarjan模板题)
- |Hdu 3622|2-SAT|二分|Bomb Game
- Unity3D游戏优化方案
- C程序下的深度冒泡排序
- 矩阵中的路径
- Codeforces Round #406 (Div. 1) C. Till I Collapse(可持久化线段树)
- 编写一个学生信息系统的菜单程序,在菜单其中的增加记录的菜单选项中实现对一条学生记录的录入,记录中需要有学号、姓名、性别,年龄籍贯等字段,要求用最合适的控件录入。
- 蓝桥杯 煤球数目
- linux的一些基础命令
- PHP实现前端页面跳转三种实现方法