UVA 1595 multimap 的应用
2016-01-28 14:46
190 查看
这道题目的大意是给出一系列的点,问:是否能找到一个对称轴,使得所有点左右对称。
这是multimap的简单应用,把纵坐标看作key,相应的所有点纵坐标相等的点的横坐标看作value,然后把value的值相加,除以点的个数,得到一个值,这个值可能就是对称轴,然后计算所有的点,看是否是相同的对称轴,思路比较简单。
这是multimap的简单应用,把纵坐标看作key,相应的所有点纵坐标相等的点的横坐标看作value,然后把value的值相加,除以点的个数,得到一个值,这个值可能就是对称轴,然后计算所有的点,看是否是相同的对称轴,思路比较简单。
#include<iostream> #include<map> #include<string> #include<string.h> #include<math.h> #include<set> using namespace std; typedef multimap<int,int> M; int main(){ int t,n,a,b; cin>>t; M m; set<float> ss; while(t--){ cin>>n; m.clear(); ss.clear(); for(int i=0;i<n;i++){ cin>>a>>b; m.insert(pair<int,int>(b,a)); } int sum=0,c=0,flag=0; float d; M::iterator it; pair<M::iterator,M::iterator> ret; for(it=m.begin();it!=m.end();){ sum=0; c=0; // cout<<it->first<<"=>"; ret=m.equal_range(it->first); for(it=ret.first;it!=ret.second;it++){ sum+=(*it).second; c++; } d=sum/c; ss.insert(d); if(ss.size()>1){ cout<<"NO"<<endl; flag=-1; break; } } if(flag==0) cout<<"YES"<<endl; } return 0; }
相关文章推荐
- 网络数据包收发流程(二):不配置NAPI的情况
- Freescale Yocto的安装,环境Ubuntu14.04
- Jquery基础学习(一)
- 一个简单的文件合并工具
- switch的用法
- 微信朋友圈图片处理策略
- C操作内存函数(memset,memcpy,memcmp)
- 使用UISearchController 实现搜索框
- jQuery的deferred对象详解
- Linux学习之CentOS(二十)--CentOS6.4下修改MySQL编码方法
- 多列布局
- position:sticky 定位 position:fixed
- 个性签名
- c#版在pc端发起微信扫码支付
- View绘制流程简述
- HDU 1286 找新朋友 (欧拉函数_打表)
- 循环生成学号/
- EventBus详细解析
- IDA动态调试Android的DEX文件
- js对象或json对象深拷贝