zoj 2540 Form a Square( Water~)
2011-01-19 21:07
393 查看
给你四个点的坐标,判断是否能组成一个正方形。。。我按矩形做的,居然A了。。改成正方形依然A。。
我是用勾股定理(两个对顶角是直角)+临边相等判断的。
这个是今天A的第10道题,哇咔咔。。。
我是用勾股定理(两个对顶角是直角)+临边相等判断的。
这个是今天A的第10道题,哇咔咔。。。
#include <stdio.h> #include <stdlib.h> #include <iostream> #include <string.h> using namespace std; typedef struct{ double x,y; }coor; coor c[4]; double len(double x,double y,double xx,double yy) { return (x-xx)*(x-xx)+(y-yy)*(y-yy); } int compute(coor a,coor b,coor c,coor d) { if( len(a.x,a.y,c.x,c.y) == len(a.x,a.y,b.x,b.y) + len(b.x,b.y,c.x,c.y) ) if( len(b.x,b.y,c.x,c.y) + len(c.x,c.y,d.x,d.y) == len(b.x,b.y,d.x,d.y) ) if( len(a.x,a.y,b.x,b.y) == len(b.x,b.y,c.x,c.y) ) return 1; return 0; } int main() { int ncases,ind = 1,blank = 0,i,j,k,x,flag; scanf("%d",&ncases); while( ncases-- ) { flag = 0; if( blank ) printf("/n"); blank = 1; for(i=0; i<4; i++) scanf("%lf %lf",&c[i].x,&c[i].y); for(i=0; i<4; i++) for(j=0; j<4; j++) { if( j == i ) continue; for(k=0; k<4; k++) { if( k == i || k == j ) continue; x = 6 - k - i - j; if( compute(c[i],c[j],c[k],c[x]) == 1 ) { flag = 1; goto end; } } } end:; printf("Case %d:/n",ind++); if( flag ) printf("Yes/n"); else printf("No/n"); } return 0; }
相关文章推荐
- ZOJ 2540 Form a Square
- ZOJ 2540 Form a Square
- 【矩阵快速幂】ZOJ 2974 Just Pour the Water
- TOJ 4369 ZOJ 3632 Watermelon Full of Water / 线段树优化DP
- ZOJ 1066(POJ 1099) Square Ice(…
- zoj 1909 Square 不能编译求指导!!
- ZOJ 3913 Bob wants to pour water(二分)
- ZOJ 3913 Bob wants to pour water (计算几何+二分)
- ZOJ 3913 Bob wants to pour water ZOJ Monthly, October 2015 - H
- 两个几何水题ZOJ 1090 2540
- ZOJ-3632 Watermelon Full of Water 线段树+DP
- zoj 2974 Just Pour the Water 矩阵
- ZOJ 3913 Bob wants to pour water
- ZOJ 3632 Watermelon Full of Water(单点更新,区间查询)
- Watermelon Full of Water [ZOJ 4778]
- ZOJ2974-Just Pour the Water
- ZOJ 2974 Just Pour the Water(矩阵快速幂)
- zoj 2974 Just Pour the Water
- ZOJ 3632 Watermelon Full of Water(dp+线段树或单调队列优化)
- zoj 2540 判断是否为正方形