POJ 1940 Polygon Programming with Ease(给出线段中点求端点+解简单方程)
来源:互联网 发布:禁忌搜索算法的优缺点 编辑:程序博客网 时间:2024/05/20 03:36
POJ 1940 Polygon Programming with Ease(给出线段中点求端点+解简单方程)
http://poj.org/problem?id=1940
题意: ZOJ 1974
POJ1939是给出n个正好构成一个多边形的点的坐标,要我们求每条边的中点坐标. 此题是给出我们该多边形的每条边的中点,然后要我们求该多边形的每个端点坐标.(同样按顺序给出,按顺序输出)
分析:
我们分析用例1吧.5个点坐标为:x1,y1,x2,y2,x3,y3,x4,y4,x5,y5.那么有下面公式:
x1+x2=14*2
x2+x3=20*2
x3+x4=18*2
x4+x5=12*2
x5+x1=10*2
那么我们可以看到用 +1等式 -2等式 +3等式-4等式+5等式 可以推出 2*x1 = 20. 即如下所示:
+ x1+x2=14*2
– x2+x3=20*2
+ x3+x4=18*2
– x4+x5=12*2
+ x5+x1=10*2
那么我们知道了x1的值之后如何计算x2,x3,x4..值呢?
x2= 2等式右边的值 – x1的值.
x3= 3等式右边的值 – x2的值,
依次类推.
最终我们求出了所有x坐标.y坐标同理可得.
注意n为奇数,如果n为偶数,是有无穷解的.
x1+x2=2
x2+x3=2
x3+x4=2
x4+x1=2
如上面4个坐标, 由1等式+3等式-2等式 可以推出4等式. 所以有无穷解.
AC代码:
#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;const int maxn=1000+5;struct Point{ double x,y; Point(){} Point(double x,double y):x(x),y(y){}}P[maxn],S[maxn];int main(){ int n; while(scanf("%d",&n)==1) { S[0].x=S[0].y=0; for(int i=0;i<n;++i) { scanf("%lf%lf",&P[i].x,&P[i].y); if(i%2==0) { S[0].x += P[i].x; S[0].y += P[i].y; } else { S[0].x -= P[i].x; S[0].y -= P[i].y; } } for(int i=1;i<n;++i) { S[i].x = P[i-1].x*2-S[i-1].x; S[i].y = P[i-1].y*2-S[i-1].y; } printf("%d",n); for(int i=0;i<n;++i) printf(" %.6lf %.6lf",S[i].x,S[i].y); printf("\n"); } return 0;}
- POJ 1940 Polygon Programming with Ease(给出线段中点求端点+解简单方程)
- POJ 1940 Polygon Programming with Ease 笔记
- zoj 1974 || poj 1940 Polygon Programming with Ease
- POJ 1940 Polygon Programming with Ease(高斯消元)
- POJ 1939 Diplomatic License(求线段中点)
- HDU5295给出俩条线段和中点给出长度求点坐标
- poj Intersection 1410 (数学几何 求线段方程)
- 求线段中点(非精确)
- poj 1601(扩展欧几里德求不定方程的整数解)
- POJ 2528 区间端点离散化,线段树区间更新
- 线段树端点更新 poj 2828 Buy Tickets
- POJ 3304 Segments 枚举线段端点+判断相交
- 求方程的解
- 求Pell方程解
- 已知线段端点坐标,求线段上等距离的点坐标序列
- fme_线段中点提取
- UVA 10673 - Play with Floor and Ceil (扩展欧几里得求方程的解)
- poj 3468 A Simple Problem with Integers( 线段树求区间和 )
- cc-150,1.3
- Netty In Action中文版 - 第十六章:从EventLoop取消注册和重新注册
- jvm的工作原理
- IIR与FIR基础知识
- MySQL命令行插入中文出错的解决
- POJ 1940 Polygon Programming with Ease(给出线段中点求端点+解简单方程)
- 笑不笑由你
- SVM,ROC读书报告
- MATLAB中的概率函数
- cc150,1.4
- mtk的scatter
- ubuntu 14.04 编译内核出现unable to locate package ncurses-devel 问题的解决
- 【Python基础学习篇】Python列表
- x264优化笔记