UVA 1595 Symmetry
思路:
这道题和 UVA221 Urban Elevations 思路一样的;用结构体pot存x,y的值;
用double数组x存下每一个可以做对称轴的点,然后sort,unique,然后遍历每一个对称轴,
写一个函数看看这个对称轴可不可以完成折叠;怎么看可不可以完成折叠呢?
首先把一个坐标轴上的点都用 map<pot,bool> 存起来,再遍历一些点看看它的对称点
在不在坐标轴上,如果都在说明可以折叠。
注意:
结构体pot要重载 < 才能做map的key。
1 #include<iostream> 2 #include<cstdio> 3 #include<map> 4 #include<algorithm> 5 using namespace std; 6 #define maxn 1010 7 struct pot { 8 int x, y; 9 bool operator<(const pot &p)const//重载< 10 { 11 return this->x < p.x || (this->x == p.x&&this->y < p.y); 12 } 13 }; 14 map<pot, bool> pic;//每个点在是否在坐标轴上 15 double x[maxn*2]; 16 pot p,pots[maxn]; 17 int n; 18 bool find(double mx)//以mx为轴可不可以折叠 19 { 20 for (int i = 0; i <= n/2; i++) 21 { 22 pot p1;//p1是以mx为轴的pots[i]的对称点 23 p1.x = mx*2-pots[i].x; 24 p1.y = pots[i].y; 25 if (!pic[p1])//对称点在坐标轴上 26 { 27 return false; 28 } 29 } 30 return true; 31 } 32 33 int main() 34 { 35 int t; 36 scanf("%d", &t); 37 while (t--) 38 { 39 scanf("%d", &n); 40 for (int i = 0; i < n; i++) 41 { 42 scanf("%d%d", &p.x, &p.y); 43 pots[i] = p; 44 pic[p] = true; 45 x[i*2] = p.x; 46 if (i != 0)//两点的中点也可以做对称轴 47 x[(i-1) * 2 + 1] = (x[(i - 1) * 2] + x[i * 2]) / 2.0; 48 49 } 50 51 sort(x, x + n*2); 52 int m = unique(x, x + n*2) - x; 53 54 bool ok = false; 55 for (int i = 0; i < m; i++) 56 { 57 if (find(x[i])) 58 { 59 ok = true; 60 //printf("i=%d x[%d]=%lf\n", i,i,x[i]); 61 break; 62 } 63 } 64 65 if (ok) 66 printf("YES\n"); 67 else 68 printf("NO\n"); 69 } 70 71 return 0; 72 }
转载于:https://www.cnblogs.com/fudanxi/p/10383002.html
UVA 1595 Symmetry相关推荐
- 5-6 UVA 1595 Symmetry对称轴
题目大意紫书和原文都讲的非常易懂清晰, 观察给出的数据范围:不超过1000个点,每个点坐标范围在-10000到10000之间! 直接暴力求解就可以了! 整体思路: 因为一撮点要轴对称的话,肯定有一个确 ...
- Symmetry UVA - 1595
不能再摸鱼了,加油! #include <bits/stdc++.h> using namespace std; int main () {int n;cin>>n;while ...
- 1595:Symmetry
Symmetry 我的思路: 开始是想着将所有点都存在set里面,找出对称轴,然后对于每一个点确定其对称点是否存在,但是觉得这样效率似乎太低,就放弃了. 后来想到了这样做:将所有点按x坐标进行排序,若 ...
- 紫书《算法竞赛入门经典》
紫书<算法竞赛入门经典>题目一览 第3章 数组和字符串(例题) UVA 272 TEX Quotes UVA 10082 WERTYU UVA 401 Palindromes UVA 34 ...
- WaWa的奇妙冒险(第二周集训自闭现场)
第二周周记 (一)例题记录 A-简单计算器 (水题,栈的运用) HDU - 1237 Input Output Sample Input Sample Output 理解 AC代码 B-计算 (逆波兰 ...
- 算法竞赛入门经典(第2版)—第五章(C++与STL入门)
文章目录 零碎知识点整理 题目 10474 - Where is the Marble? 101 - The Blocks Problem 10815 - Andy's First Dictionar ...
- Uva1595 对称轴
Uva 1595对称轴 题目描述: 给出平面上N个点,问是否可以找到一条竖线,使得所有点左右对称. 思路: 这个题我的思路是将所有高度(y)相同的点求每组高度的坐标x的平均值,如果总个数N是偶数,那么 ...
- 集训der二周目学习(练习题+感悟)
永动WA题机der二周目学习摘录 (一)有趣的题目 A - 看病要排队 HDU - 1873 Input Output Sample Input Sample Output 对题目的理解 代码 B - ...
- UVA Symmetry
#include <cstdio> #include <iostream> #include <algorithm> #include <set> #i ...
最新文章
- 远程桌工具-Remote Desktop Organizer
- WIN7安装及配置JDK
- Exp7 网络欺诈防范
- api地理编码_通过地理编码API使您的数据更有意义
- 浅谈HTTP中Get与Post的区别_转
- TCP UDP 本地套接字 网络套接字
- 蜂鸣器播放青鸟,含曲谱(小萌白新文)
- 微擎模块-微信门禁小区物业版(微信开门)
- 微型计算机主板usb电源损坏,自已动手彻底解决主板USB供电不足的问题
- 用计算机写作文教学反思,语文作文教学反思(精选6篇)
- sql with ties_SQL WITH TIES子句
- python绘制各种摆线(包括心形线星形线等,超炫酷)
- SAP idoc功能够强大: 采购订单下达自动触发销售订单创建
- 【误差】方差、标准差、均方误差和均方根误差的区别总结
- studio 3T 破解方法(亲测)
- 满满的干货!传统备份vs CDP vs CDM
- 杰奇采集分页 php,杰奇自定义分页代码,教程及案例
- vue创建项目太慢、卡死
- 针对东北老公马俊打上海老婆黄佳的看法
- 安科瑞高速公路变电所运维云平台解决方案