【POJ 1755】n*n的半平面交算法 适用于不等式交
来源:互联网 发布:淘宝保证金要交多少 编辑:程序博客网 时间:2024/04/29 06:22
Triathlon
Time Limit: 1000MS Memory Limit: 10000KTotal Submissions: 5519 Accepted: 1405
Description
Triathlon is an athletic contest consisting of three consecutive sections that should be completed as fast as possible as a whole. The first section is swimming, the second section is riding bicycle and the third one is running.
The speed of each contestant in all three sections is known. The judge can choose the length of each section arbitrarily provided that no section has zero length. As a result sometimes she could choose their lengths in such a way that some particular contestant would win the competition.
The speed of each contestant in all three sections is known. The judge can choose the length of each section arbitrarily provided that no section has zero length. As a result sometimes she could choose their lengths in such a way that some particular contestant would win the competition.
Input
The first line of the input file contains integer number N (1 <= N <= 100), denoting the number of contestants. Then N lines follow, each line contains three integers Vi, Ui and Wi (1 <= Vi, Ui, Wi <= 10000), separated by spaces, denoting the speed of ith contestant in each section.
Output
For every contestant write to the output file one line, that contains word "Yes" if the judge could choose the lengths of the sections in such a way that this particular contestant would win (i.e. she is the only one who would come first), or word "No" if this is impossible.
Sample Input
910 2 610 7 35 6 73 2 76 2 63 5 78 4 610 4 21 8 7
Sample Output
YesYesYesNoNoNoYesNoYes
Source
Northeastern Europe 2000
#define DeBUG#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <cstdlib>#include <algorithm>#include <vector>#include <stack>#include <queue>#include <string>#include <set>#include <sstream>#include <map>#include <list>#include <bitset>using namespace std ;#define zero {0}#define INF 0x3f3f3f3f#define EPS 1e-10#define TRUE true#define FALSE falsetypedef long long LL;const double PI = acos(-1.0);//#pragma comment(linker, "/STACK:102400000,102400000")inline int sgn(double x){ return fabs(x) < EPS ? 0 : (x < 0 ? -1 : 1);}#define N 100005// Point classstruct Point;typedef Point Vec;struct Point{ double x, y; Point () {} Point(double a, double b) { x = a; y = b; }};void initial(Point p[], int &pCnt) //联机算法,初始化无限大平面,切割多边形从1开始{ p[1] = Point(0, 0); p[2] = Point(0, 1000000); p[3] = Point(1000000, 1000000); p[4] = Point(1000000, 0); p[5] = p[1]; p[0] = p[4]; pCnt = 4;}Point intersect(Point x, Point y, double a, double b, double c){ double u = fabs(a * x.x + b * x.y + c); double v = fabs(a * y.x + b * y.y + c); return Point( (x.x * v + y.x * u) / (u + v) , (x.y * v + y.y * u) / (u + v) );}int cut(Point p[], int &pCnt, double a, double b , double c) //p为多边形数组{ Point q[1000];//队列最大长度 int curCnt = 0; for (int i = 1; i <= pCnt; ++i) { if (sgn(a * p[i].x + b * p[i].y + c) > 0)q[++curCnt] = p[i]; //注意这里一定是大于0,而不是大于等于0,根据题意变化,下面的本来就没有= else { if (sgn(a * p[i - 1].x + b * p[i - 1].y + c) > 0) { q[++curCnt] = intersect(p[i], p[i - 1], a, b, c); } if (sgn(a * p[i + 1].x + b * p[i + 1].y + c) > 0) { q[++curCnt] = intersect(p[i], p[i + 1], a, b, c); } } } for (int i = 1; i <= curCnt; ++i) p[i] = q[i]; p[curCnt + 1] = q[1]; p[0] = p[curCnt]; pCnt = curCnt; return curCnt;}struct Node{ double x, y, z;};Node person[200];int main(){#ifdef DeBUGs freopen("C:\\Users\\Sky\\Desktop\\1.in", "r", stdin);#endif int n; while (scanf("%d", &n) + 1) { for (int i = 0; i < n; i++) { scanf("%lf%lf%lf", &person[i].x, &person[i].y, &person[i].z); } Point p[200]; int num; double a, b, c; for (int i = 0; i < n; i++) { bool flag = true; initial(p,num); for (int j = 0; j < n; j++) { if (i == j) continue; c = 1 / person[j].z - 1 / person[i].z; a = 1 / person[j].x - 1 / person[i].x; b = 1 / person[j].y - 1 / person[i].y; if (cut(p, num, a, b, c) <= 2) { flag = false; break; } } if (flag) printf("Yes\n"); else printf("No\n"); } } return 0;}
0 0
- 【POJ 1755】n*n的半平面交算法 适用于不等式交
- POJ 1755 Triathlon(半平面交解不等式)
- poj 1755 Triathlon(半平面交解不等式)
- poj 1755 Triathlon (半平面交求解不等式组)
- poj 1755 (半平面交解不等式)
- poj 1755 Triathlon 半平面交求不等式的 是否为空集-------构造有向直线
- POJ 1755 Triathlon 判断不等式有解+半平面的交
- 半平面交讲解 - N^2写法
- POJ 1755 半平面交
- POJ 1755 Triathlon(n^2 半平面交, 两点式和参数式直线求交点)
- poj 3335 && poj 3130 && poj 2451 && poj 1474(n(logn)求解半平面交)
- poj1755 半平面交解不等式组
- POJ 1755 Triathlon 半平面交
- POJ 1755 Triathlon【半平面交】
- poj 1755 Triathlon(半平面交应用)
- POJ 1755 Triathlon 半平面交
- POJ 1755 Triathlon 半平面交
- 【半平面交】 POJ 1755 Triathlon
- poj-2453
- 使用live555 VLC发送接收视频TS流
- 刘政平_下一代移动安全
- Windows下Redis的安装使用
- 关于Android环境模拟器搭建方法
- 【POJ 1755】n*n的半平面交算法 适用于不等式交
- ZOJ1002 FIRE NET
- 使用 CustomScript 扩展程序自动执行 Linux 虚拟机自定义任务
- cocos2d正确创建和释放对象,引用计数器的使用
- Linux常用命令大全
- Microsoft SQL Server 2005技术内幕:T-SQL查询 PerformanceDB.sql
- Set-WSManQuickConfig : 拒绝访问。set-wsmanquickconfig access is denied windows 7
- mssql数据库系统日常维护关键信息提取 转
- mysql锁表机制分析