[SGU]136. Erasing Edges
2012-11-01 19:43
148 查看
Analysis
题目大意为给定一个多边形的各边中点,判断是否存在合法的多边形。题目对合法的定义很宽松,所以变得很水……对n的奇偶性进行分类讨论,若为奇数直接解方程输出,若为偶数则需判断无解还是任意解。
Accepted Code
题目大意为给定一个多边形的各边中点,判断是否存在合法的多边形。题目对合法的定义很宽松,所以变得很水……对n的奇偶性进行分类讨论,若为奇数直接解方程输出,若为偶数则需判断无解还是任意解。
Accepted Code
const zero=1e-8; var p,q,u,v,x,y:array[0..10100] of extended; n,i:longint; begin readln(n); for i:=1 to n do read(p[i],q[i]); if odd(n) then begin u[1]:=0; v[2]:=0; for i:=1 to n do begin u[i+1]:=2*p[i]-u[i]; v[i+1]:=2*q[i]-v[i]; end; x[1]:=p -(u[1]+u )/2; y[1]:=q -(v[1]+v )/2; writeln('YES'); for i:=1 to n do begin x[i+1]:=2*p[i]-x[i]; y[i+1]:=2*q[i]-y[i]; writeln(x[i]:0:3,' ',y[i]:0:3); end; end else begin x[1]:=-1.0; y[1]:=1.0; for i:=1 to n do begin x[i+1]:=2*p[i]-x[i]; y[i+1]:=2*q[i]-y[i]; end; if (abs(x[1]-x[n+1])<=zero) and (abs(y[1]-y[n+1])<=zero) then begin writeln('YES'); for i:=1 to n do writeln(x[i]:0:3,' ',y[i]:0:3); end else writeln('NO'); end; end.
相关文章推荐
- 快速切题 sgu136. Erasing Edges
- sgu 136 Erasing Edges
- SGU 136 Erasing Edges(计算几何)
- Erasing Edges - SGU 136(构造多边形)
- SGU136 Erasing Edges
- [SGU 131]Hardwood floor(状压DP)
- sgu 101. Domino
- sgu 108-self-numbers 2
- SGU 102 Coprimes 翻译 题解
- sgu 185(最短路+最大流)
- SGU112
- SGU 113 Nearly prime numbers
- sgu175---pascal
- SGU 111 Very simple problem
- SGU 126 Boxes
- sgu113
- SGU 139 Help Needed!
- SGU 499:Greatest Greatest Common Divisor
- SGU 441 Set Division(矩阵,斯特灵数)
- SGU 275 To xor or not to xor