栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

zoj 3717 Balloon

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

zoj 3717 Balloon

#include <iostream>#include <iomanip>#include <sstream>#include <string>#include <cstdio>#include <algorithm>#include <cstring>#include <cctype>#include <cmath>#include <vector>#include <queue>#include <stack>#include <map>#include <set>#include <bitset>#define maxn 20000#define ee 1e-5using namespace std;struct Point{ int x,y,z; Point(int x=0,int y=0,int z=0):x(x),y(y),z(z){}};struct Twosat{ int n; vector<int> G[maxn*2]; bool mark[maxn*2]; int S[maxn*2],c; bool dfs(int x) { if (mark[x^1]) return false; if (mark[x]) return true; mark[x]=true; S[c++]=x; for (int i=0;i<G[x].size();i++) if(!dfs(G[x][i])) return false; return true; } void init(int n) { this->n=n; for (int i=0;i<n*2;i++) G[i].clear(); memset(mark,0,sizeof(mark)); } void add(int x,int xval,int y,int yval) { x=x*2+xval; y=y*2+yval; G[x^1].push_back(y); G[y^1].push_back(x); } bool 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; }};int n;Point a[maxn][2];double dis(int i,int a1,int j,int b1){ double dx=a[i][a1].x-a[j][b1].x,dy=a[i][a1].y-a[j][b1].y,dz=a[i][a1].z-a[j][b1].z; return dx*dx+dy*dy+dz*dz;}int dcmp(double x){ if (fabs(x)<ee) return 0;else return x<0?-1:1;}bool work(double r){ Twosat two; two.init(n); for (int i=0;i<n;i++) for (int i1=0;i1<2;i1++) for (int j=i+1;j<n;j++) for (int j1=0;j1<2;j1++) if (dcmp(dis(i,i1,j,j1)-4*r*r)<0) two.add(i,i1^1,j,j1^1); return two.solve();}int main(){ while (cin>>n) { for (int i=0;i<n;i++) cin>>a[i][0].x>>a[i][0].y>>a[i][0].z>>a[i][1].x>>a[i][1].y>>a[i][1].z; double l=0,r=200000; while (r-l>ee) { double mid=(l+r)/2; if (work(mid)) l=mid; else  r=mid; } printf("%lfn",l); } return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/369637.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号