[JSOI2008]完美的对称 题解
2016-11-15 13:41
344 查看
题目大意:
首先我们给定一点A以及对称中心S,点A'是点A以S为对称中心形成的像点,即点S是线段AA'的对称中心。
点阵组(X)以S为中心的像点是由每个点的像点组成的点阵组。X是用来产生对称中心S的,即点阵X以S为中心的像点的集合即为点阵X本身。
思路:
找到中心就要使得其位于点阵的中心,所以将每个点双关键字排序(横坐标小的在前,一样的使纵坐标有序)
代码:
首先我们给定一点A以及对称中心S,点A'是点A以S为对称中心形成的像点,即点S是线段AA'的对称中心。
点阵组(X)以S为中心的像点是由每个点的像点组成的点阵组。X是用来产生对称中心S的,即点阵X以S为中心的像点的集合即为点阵X本身。
思路:
找到中心就要使得其位于点阵的中心,所以将每个点双关键字排序(横坐标小的在前,一样的使纵坐标有序)
代码:
1 #include<cstdio> 2 #include<algorithm> 3 using namespace std; 4 int i,n,X,Y; 5 struct data { int x,y; }a[20005]; 6 7 bool cmp(data a,data b) 8 { 9 if (a.x==b.x) return a.y<b.y; 10 return a.x<b.x; 11 } 12 13 int main() 14 { 15 scanf("%d",&n); 16 for (i=1;i<=n;++i) scanf("%d%d",&a[i].x,&a[i].y); 17 sort(a+1,a+n+1,cmp); 18 X=a[1].x+a .x;Y=a[1].y+a .y; 19 for (i=2;i+i<n+3;++i) 20 if (a[i].x+a[n+1-i].x!=X || Y!=a[i].y+a[n+1-i].y) 21 { 22 printf("This is a dangerous situation!\n"); 23 return 0; 24 } 25 printf("V.I.P. should stay at (%.1lf,%.1lf).\n",X/2.0,Y/2.0); 26 return 0; 27 }
相关文章推荐
- 找规律-洛谷P1227 [JSOI2008]完美的对称
- [luoguP1227] [JSOI2008]完美的对称(sort)
- [JSOI2008] [洛谷P1227] 完美的对称|乱搞
- 洛谷 P1227 [JSOI2008]完美的对称
- [JSOI2008]完美的对称{数论}
- 洛谷 P1227 [JSOI2008]完美的对称
- 洛谷 P1227 [JSOI2008]完美的对称
- 计算几何瞎暴力——Luogu1227 [JSOI2008]完美的对称
- 洛谷 P1227 [JSOI2008]完美的对称
- [JSOI2008]Blue Mary开公司
- 1013: [JSOI2008]球形空间产生器sphere
- bzoj1567: [JSOI2008]Blue Mary的战役地图
- BZOJ 1014 [JSOI2008]火星人prefix | Splay维护哈希值
- BZOJ 1015 [JSOI2008]星球大战starwar
- bzoj1013: [JSOI2008]球形空间产生器sphere
- bzoj1014: [JSOI2008]火星人prefix Splay+二分答案与字符串Hash求最长公共前缀
- BZOJ 1016: [JSOI2008]最小生成树计数( kruskal + dfs )
- (bzoj 1015: [JSOI2008]星球大战starwar)<并查集>
- 你还在为无法完美卸载SQL Server 2008 R2而烦恼吗?
- [BZOJ1015] [JSOI2008]星球大战starwar