uva11853 图 范围节点的处理和遍历
2016-08-05 00:35
176 查看
如果这个节点有一定范围半径:
1. 那么通过圆心距判断是否相交。
2. 通过判断圆和边界来判断是否出界。
3. 相交的圆进行遍历。
两个节点之间有范围约束,那么可以用圆心间距离来进行约束,通过判断圆和边界来确定是否出界。
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=19027
1. 那么通过圆心距判断是否相交。
2. 通过判断圆和边界来判断是否出界。
3. 相交的圆进行遍历。
两个节点之间有范围约束,那么可以用圆心间距离来进行约束,通过判断圆和边界来确定是否出界。
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=19027
#include<cstdio> #include<cstdlib> #include<cmath> #include<cstring> #include<algorithm> using namespace std; const int maxn = 1000 + 5; const double W = 1000.0; int n, vis[maxn]; double x[maxn], y[maxn], r[maxn], left, right; bool ok; bool intersect(int c1, int c2) {//判断是否相邻,相接才能开始遍历 return sqrt((x[c1]-x[c2])*(x[c1]-x[c2]) + (y[c1]-y[c2])*(y[c1]-y[c2])) < r[c1] + r[c2]; } void check_circle(int u) { if(x[u] - r[u] < 0) left = min(left, y[u] - sqrt(r[u]*r[u] - x[u]*x[u])); if(x[u] + r[u] > W) right = min(right, y[u] - sqrt(r[u]*r[u] - (W-x[u])*(W-x[u]))); } // 能达到底部则返回true bool dfs(int u) { if(vis[u]) return false; vis[u] = 1; if(y[u] - r[u] < 0) return true;//超出底部返回true for(int v = 0; v < n; v++) if(intersect(u, v) && dfs(v)) return true; check_circle(u); return false; } int main() { while(scanf("%d", &n) == 1) { ok = true; left = right = W; memset(vis, 0, sizeof(vis)); for(int i = 0; i < n; i++) scanf("%lf%lf%lf", &x[i], &y[i], &r[i]); for(int i = 0; i < n; i++) if(y[i] + r[i] >= W && dfs(i)) { ok = false; break; } // 从上往下dfs if(ok) printf("0.00 %.2lf %.2lf %.2lf\n", left, W, right); else printf("IMPOSSIBLE\n"); } return 0; }
相关文章推荐
- UVa 112|POJ 1145|Tree Summing|字符串处理|树的遍历
- UVA1600 Dfs回溯完全遍历+记忆化搜索(用最小距离剪枝)+细节处理 (值得复习)(水)
- 问题-Delphi7中JSON遍历节点不支持使用IN处理方法?
- delphi 遍历treeview某个节点下所有节点的函数
- 在SVG文档中遍历子节点的问题
- AJAX 学习笔记(5) 处理XML文档的DOM元素属性和遍历DOM元素方法
- 遍历节点生成菜单(递归)
- 如何在Visual Studio C#.Net WinForm 中 TreeView中右键选择节点进行处理
- 遍历XML文档的所有节点及属性(ASP)
- Linq To Xml上手(1) Descendants、Elements遍历节点
- 程序员面试题精选(35):一次遍历链表求中间节点位置
- 递规法遍历xml树的属性和节点值,并将其批量放入数组
- .net 处理xml 查找节点 属性 添加节点
- 当XML用selectSingleNode查找节点时,出现“未指定错误”时的处理
- asp 遍历xml各节点内容
- TreeNode 遍历兄弟节点
- 遍历treeView子节点 同时遍历父结点 直到顶级结点 并不是全部父的集合
- treeview节点遍历
- C# 遍历 XML文件 节点 net XML节点 遍历
- 关于Treeview 二级节点的遍历 与选择