Uva 3226 Symmetry
题目给出一些点的坐标(横坐标,纵坐标),没有重叠的点,求是否存在一条竖线(平行于y轴的线),使线两边的点左右对称。
我的思路:对于相同的纵坐标的点,即y值相同的点,可以将x的总和计算出,然后除以点的数目,即可得到对称轴的x坐标。所以,对于不同的y值,可以算出这个y值对应的点的对称轴的x坐标,只要观察这些x坐标的值是否相等即可。如果相同,则存在一条竖线满足题意。如果出现不相同,则不存在符合题意的竖线。
注意点:计算后的x的值可能为小数,故需要用double保存。
/*
UvaOJ 1595
Emerald
Mon 4 May 2015
*/
#include <iostream>
#include <cstring>
#include <cstdio>
#include <map> using namespace std; int main() {
int T;
cin >> T;
while( T -- ) {
int N;
cin >> N;
map < int,int > yToXsum; // key : the value of y, value : the total value of x in y axis
map < int,int > yTimes; // key : the value of y, value : the times that y appears
map < int, int >::iterator it;
int x, y;
while( N -- ) {
scanf( "%d%d", &x, &y );
if( yToXsum.count( y ) ) {
yToXsum[y] += x;
} else {
yToXsum[y] = x;
}
if( yTimes.count( y ) ) {
yTimes[ y ] ++;
} else {
yTimes[ y ] = 1;
}
}
double ave; // the average of the x
it = yTimes.begin();
ave = 1.0 * yToXsum [ it->first ] / it->second;
for( it ++; it!=yTimes.end(); it ++ ) {
if( ave != 1.0 * yToXsum [ it->first ] / it->second ) {
break;
}
}
if( it == yTimes.end() ) {
printf( "YES\n" );
} else {
printf( "NO\n" );
}
}
return 0;
}
Uva 3226 Symmetry的更多相关文章
- uva 1595 - Symmetry
思路:首先,如果这些点对称,那么它们的对称轴是x = m(m是所有点横坐标的平均值): 把这些点放到一个集合里,然后扫描每个点,计算出它关于x = m的对称点,看这个点是否在集合里面. 如果有 ...
- uva 1595 Symmetry“结构体”
给出平面上N(N<=1000)个点.问是否可以找到一条竖线,使得所有点左右对称,如图所示: 则左边的图形有对称轴,右边没有. Sample Input 3 5 -2 5 0 0 6 5 4 ...
- UVa 1595 Symmetry(set)
We call a figure made of points is left-right symmetric as it is possible to fold the sheet of paper ...
- UVa 1595 Symmetry (set && math)
题意:给出n个在直角坐标系上的点,问你能不能找出一条竖轴(即垂直于x的轴)使得所有的点根据这条轴对称,能则输出YES,否则输出NO 分析:首先需要找到对称轴的值,将所有n个点的x轴的值加起来然后去除以 ...
- UVa 1595 (水题) Symmetry
颓废的一个下午,一直在切水题,(ˉ▽ ̄-) 首先如果这些点是对称的话,那么它们的对称轴就是x = m,m是横坐标的平均值. 把这些点放到一个集合里,然后扫描每个点,计算出它关于x = m的对称点,看这 ...
- UVA 10585 Center of symmetry
题意:给出一个点集,问这个集合有没有中心点使点集对称,这个点可以是点集中的点也可以不是点集的点. 解法:一开始我枚举每两个点连线的中点……结果T了orz当时也不知道怎么想的…… 将点按横坐标排序,如果 ...
- 【UVA】1595 Symmetry(模拟)
题目 题目 分析 理清思路,上模拟. 代码 #include <bits/stdc++.h> using namespace std; const int maxn=100 ...
- Symmetry UVA - 1595
The figure shown on the left is left-right symmetric as it is possible to fold the sheet of paper ...
- UVa第五章STL应用 习题((解题报告))具体!
例题5--9 数据库 Database UVa 1592 #include<iostream> #include<stdio.h> #include<string.h&g ...
随机推荐
- 《Linux内核设计与实现》内存管理札记
1.页 芯作为物理页存储器管理的基本单元,MMU(内存管理单元)中的页表,从虚拟内存的角度来看,页就是最小单位. 内核用struct page结构来标识系统中的每个物理页.它的定义例如以下: flag ...
- Jquery的一些简单使用记录
//平滑滚动到底部 $(".list").scrollTo('100%', '100%', { easing: 'swing' }); //直接滚动至底部(无效果) $('.lis ...
- 控制所生成的servlet的结构: JSP page指令
在JSP中,主要有3种类型的指令:page, include和taglib.page指令允许我们通过类的导入.servlet超类的定制.内容类型的设置.以及诸如此类的事物来控制servlet的结构.p ...
- php学习笔记(3)
1.计数器 <?php /* simple access counter for php3 (c)1998 David W. Bettis dbettis@eyeintegrated.com m ...
- PHP学习笔记7-JSON数据操作
JSON,全称是JavaScript Object Notation.它是基于JavaScript编程语言ECMA-262 3rd Edition-December 1999标准的一种轻量级的数据交换 ...
- mabatis mapper开发规范
定义一个mapper接口 package mapper; import pojo.User; public interface UserMapper { public User getUser(int ...
- 转: 深入理解 AngularJS 的 Scope
查看 DEMO.参考 StackOverflow. ng-switch ng-switch 的原型继承和 ng-include 一样.所以如果你需要对基本类型数据进行双向绑定,使用 $parent ...
- JBoss Jopr
http://rhq.jboss.org/ https://issues.jboss.org/browse/JBPAPP6-947 挺好的网站: http://outofmemory.cn/code- ...
- 在systemd(CentOS7)自启动zookeeper
zookeeper的自启动脚本,如果是 sysV 模式(CeontOS6或以下版本),可以直接使用下载版本中的 src 目录下对应的 sysV 自启动包,再chkconfig即可.老方法,简单,就不说 ...
- AndroidStudio项目移植到Eclipse
原文件结构: 在AndroidStudio中 main目录对应eclipse中的src目录 可以看看每个文件夹下的目录 没有src或者main这些文件夹的都可以删掉 我这里只有app下的东西是需要留着 ...