UVA 1595 Symmetry(sort的运用)
来源:互联网 发布:淘宝上面最便宜的卫衣 编辑:程序博客网 时间:2024/05/17 05:04
Write a program that determines whether a figure, drawn with dots, is left-right symmetric or not. The dots are all distinct.
Input
The input consists of T test cases. The number of test casesT is given in the first line of the input file. The first line of each test case contains an integerN , where N (1N1, 000) is the number of dots in a figure. Each of the following N lines contains the x-coordinate andy-coordinate of a dot. Bothx-coordinates and y-coordinates are integers between -10,000 and 10,000, both inclusive.
Output
Print exactly one line for each test case. The line should contain `YES' if the figure is left-right symmetric. and `NO', otherwise.
The following shows sample input and output for three test cases.
Sample Input
3 5 -2 5 0 0 6 5 4 0 2 3 4 2 3 0 4 4 0 0 0 4 5 14 6 105 10 6 14
Sample Output
YES NO YES
输入一些点,判断是否有一条竖着的直线让所有点关于这条直线对称。
题目很简单,是个十足的水题,我分成了点的个数位偶数和奇数两种情况。
关键是注意sort函数的判断函数的写法(cmp1,cmp2),让在对称轴左边的点按X和Y从小到大排列,对称轴右边的先按X从小到大,再按Y从大到小,方便主函数处理。
#include <iostream>#include <algorithm>using namespace std;struct point{ double x; double y;};bool cmp1(point a0,point b0){ if (a0.x!=b0.x) { return (a0.x<b0.x); } else if (a0.x==b0.x) { return (a0.y<b0.y); } return false;}bool cmp2(point a0,point b0){ if (a0.x!=b0.x) { return (a0.x<b0.x); } else if (a0.x==b0.x) { return (a0.y>b0.y); } return false;}int main(){ int i,t,flag,n,ii; double dui; point p[1002]; cin>>t; for (ii=0;ii<=t-1;ii++) { cin>>n; for (i=0;i<=n-1;i++) { cin>>p[i].x>>p[i].y; } flag=1; sort(p,p+n,cmp1); if (n%2==1) { dui=p[n/2].x; sort(p+n/2,p+n,cmp2); for (i=0;i<=n/2-1;i++) { if ((p[n/2].x-p[i].x==p[n-i-1].x-p[n/2].x&&p[i].y==p[n-i-1].y)||(p[i].x==dui)) { continue; } else { flag=0; break; } } } else if (n%2==0) { sort(p+n/2,p+n,cmp2); dui=(p[(n/2)-1].x+p[n/2].x)/2; for (i=0;i<=n/2-1;i++) { if ((dui-p[i].x==p[n-i-1].x-dui&&p[i].y==p[n-i-1].y)||(p[i].x==dui)) { continue; } else { flag=0; break; } } } if (flag==0) { cout<<"NO"<<endl; } else if (flag==1) { cout<<"YES"<<endl; } } return 0;}
- UVA 1595 Symmetry(sort的运用)
- Symmetry UVa 1595(水题)
- Symmetry(对称轴)UVA 1595
- UVa 1595 - Symmetry(对比查找)
- UVa 1595 Symmetry
- UVA - 1595 Symmetry
- UVa 1595 - Symmetry
- UVa 1595 Symmetry(暴力)
- UVa: 1595 - Symmetry
- Uva 1595 Symmetry
- UVa: 1595 - Symmetry
- UVA - 1595 Symmetry
- UVa 1595 Symmetry
- UVA - 1595 Symmetry set
- Uva - 1595 - Symmetry
- Symmetry(UVa 1595)
- UVA 1595 Symmetry
- UVa 1595 - Symmetry
- 【网络】c++ socket 学习笔记(二)
- 【java编程】Map集合之hashMap两种取出方式练习
- POI导出EXCEL经典实现
- mysql对自增id重新从1排序的两种方法
- UMLet的安装及使用
- UVA 1595 Symmetry(sort的运用)
- Scala新手指南中文版 - 第四篇 Pattern Matching Anonymous Functions(模式匹配匿名函数)
- 启动另外的一个应用程序的Activity(三种方式)
- Eclipse 编码设置问题
- servlet 页面跳转、转发
- Linux rsyslog详细介绍
- Nagios各组件简述及nrpe详解
- Windows Server 2008中怎么安装证书服务
- TopCoder 603 div1 & div2