SGU136 Erasing Edges
来源:互联网 发布:天空表白墙源码v4.1 编辑:程序博客网 时间:2024/06/06 17:55
SGU136 Erasing Edges
题目大意
给出一个N个顶点多边形所有边的中点,构造这个多边形,不存在则输出NO
算法思路
单独考虑X,对于某条边的中点有
- 当N为奇数时,方程组最终为
x1∗2=Z 的形式,回代得出所有解 - 当N为偶数时,方程组最终为
0=Z 的形式,无解则输出NO,否则回代任意值
Y的情况与X相同
时间复杂度: O(N)
代码
/** * Copyright © 2015 Authors. All rights reserved. * * FileName: 136.cpp * Author: Beiyu Li <sysulby@gmail.com> * Date: 2015-06-14 */#include <bits/stdc++.h>using namespace std;#define rep(i,n) for (int i = 0; i < (n); ++i)#define For(i,s,t) for (int i = (s); i <= (t); ++i)#define foreach(i,c) for (__typeof(c.begin()) i = c.begin(); i != c.end(); ++i)typedef long long LL;typedef pair<int, int> Pii;const int inf = 0x3f3f3f3f;const LL infLL = 0x3f3f3f3f3f3f3f3fLL;const double eps = 1e-8;int sgn(double x) { return x < -eps? -1: x > eps; }const int maxn = 10000 + 5;int n;double mx[maxn], my[maxn], x[maxn], y[maxn];bool solve(){ if (n & 1) { x[0] = 0; rep(i,n) x[0] += (i & 1? -mx[i]: mx[i]) * 2; x[0] /= 2; rep(i,n-1) x[i+1] = mx[i] * 2 - x[i]; y[0] = 0; rep(i,n) y[0] += (i & 1? -my[i]: my[i]) * 2; y[0] /= 2; rep(i,n-1) y[i+1] = my[i] * 2 - y[i]; } else { x[0] = 0; rep(i,n-1) x[i+1] = mx[i] * 2 - x[i]; if (sgn(x[n-1] + x[0] - mx[n-1] * 2)) return false; y[0] = 0; rep(i,n-1) y[i+1] = my[i] * 2 - y[i]; if (sgn(y[n-1] + y[0] - my[n-1] * 2)) return false; } puts("YES"); rep(i,n) printf("%.10f %.10f\n", x[i], y[i]); return true;}int main(){ scanf("%d", &n); rep(i,n) scanf("%lf%lf", &mx[i], &my[i]); if (!solve()) puts("NO"); return 0;}
0 0
- sgu136:Erasing Edges
- SGU136 Erasing Edges
- [SGU]136. Erasing Edges
- sgu 136 Erasing Edges
- SGU 136 Erasing Edges(计算几何)
- UVa11491 - Erasing and Winning
- Erasing and Winning UVA
- Erasing and Winning UVA
- POJ3712Edges and More Edges
- hdu 2800 Adding Edges
- Codeforces160D Edges in MST
- edges detect/边缘检测
- HDU6026-Deleting Edges
- HDU6026 Deleting Edges
- HDU 6026 Deleting Edges
- hdu 6026 Deleting Edges
- Orientation of Edges CodeForces
- uva 11491 Erasing and Winning
- Python学习笔记(二):Python配置安装(windows)
- jsp隐藏对象
- Nao机器人学习笔记:Nao机器人接收邮件并读取邮件内容
- leetcode——Largest Rectangle in Histogram
- 线程的相关知识
- SGU136 Erasing Edges
- 数据库连接池
- IPC总结
- 并查集之 Find函数
- 使用字符串的处理函数
- 剑指offer 12 -打印1到最大的n位数
- 《C++Primer》读书笔记--命名空间
- java 框架基础知识(2)----动态代理-->Spring AOP
- 【牛腩】界面整合(36-61讲)