UVa-10763 - Foreign Exchange
2015-07-17 01:44
357 查看
掌握了新姿势
上面的做法太耗时了,下面的是借鉴别人的算法。
#include<iostream> #include<cstdio> #include<cstring> #include<map> using namespace std; const int maxx=500010; int a[maxx],b[maxx]; int main() { //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); int n; while(~scanf("%d",&n)&&n) { multimap<int,int> m; for(int i=1;i<=n;i++) { scanf("%d%d",&a[i],&b[i]); m.insert(pair<int,int>(a[i],b[i])); } for(int i=1;i<=n;i++) { /*int num=m.count(b[i]);//超时做法 if(num==0) break; multimap<int,int>::iterator it=m.find(b[i]); int j; for(j=1;j<=num;j++) { if(it->second==a[i]) { m.erase(it); break; } it++; } if(j>num) break;*/ pair<multimap<int,int>::iterator,multimap<int,int>::iterator> p; p=m.equal_range(b[i]); if(p.first==p.second) break; else { multimap<int,int>::iterator it; for(it=p.first;it!=p.second;it++) { if(it->second==a[i]) { m.erase(it); break; } } if(it==p.second) break; } } puts(m.empty()?"YES":"NO"); } }
上面的做法太耗时了,下面的是借鉴别人的算法。
//边读边判断 #include<iostream> #include<cstdio> #include<cstring> #include<map> using namespace std; int main() { //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); int n; while(~scanf("%d",&n)&&n) { multimap<int,int> m; for(int i=1;i<=n;i++) { int a,b; scanf("%d%d",&a,&b); multimap<int,int>::iterator it; for(it=m.find(b);it!=m.end()&&it->first==b;it++) { if(it->second==a) { m.erase(it); break; } } if(it==m.end()||it->first!=b) m.insert(make_pair(a,b)); } puts(m.empty()?"YES":"NO"); } }
相关文章推荐
- 我的Android进阶之旅------>如何为ListView组件加上快速滑块以及修改快速滑块图像
- c语言结构体赋值,并输出各种类型变量的值
- python
- UVa-10935 - Throwing cards away I
- UVa-1594 - Ducci Sequence
- HDOJ题目3729 I'm Telling the Truth(二分图)
- Fans-rt 任务局部变量特性设计方案(需求分解)
- Linux磁盘分区-格式化-加载-卸载
- ADB server didn’t ACK解决办法
- 51单片机学习笔记【二】——按键实验
- 最早延迟时间优先运行的实现
- HDU3779 Railroad JAVA版题解+深搜
- TCP协议中的三次握手和四次挥手(图解)
- UVa-1593 - Alignment of Code
- Xml解析(Dom解析xml)
- 从CSDN搬过来了
- 儿子和女儿——解释器和编译器的区别与联系
- 006-Android程序学习/微信公众平台开发/WordPress
- Codeforces Round #309 (Div. 1) C. Love Triangles 二分图
- DOM的内容