HDU5821之映射
来源:互联网 发布:数据库推荐书籍 编辑:程序博客网 时间:2024/05/16 09:52
题目传送门: http://acm.hdu.edu.cn/showproblem.php?pid=5821
题意:给我们一个初始序列和目标序列,然后给m次操作,每次操作能修改从l到r的球的位置,问m次操作后能否得到最终序列。
我们可以先将目标序列每个数的出现顺序和初始序列做一个映射,然后对于每次操作,在操作区间内排序,看最后得到的序列是否是1到n就可以了。
代码:
#include <cstdio>#include <cstring>#include <algorithm>#include <iostream>const int MAXN=1024;using namespace std;int a[MAXN],b[MAXN];int l[MAXN],r[MAXN];bool vis[MAXN];using namespace std;void solve(){ int n,m; memset(vis,true,sizeof(vis)); scanf("%d %d",&n,&m); for(int i=1;i<=n;i++) { scanf("%d",&a[i]); } for(int i=1;i<=n;i++) { scanf("%d",&b[i]); } for(int i=1;i<=m;i++) { scanf("%d %d",&l[i],&r[i]); } for(int i=1;i<=n;i++) { bool is=false; for(int j=1;j<=n;j++) { if(a[i]==b[j]&&vis[j]) { a[i]=j; vis[j]=false; is=true; break; } } if(!is) { puts("No");//如果匹配不到,则一定不行 return ; } } for(int i=1;i<=m;i++) { sort(a+l[i],a+r[i]+1); } int fl=0; for(int i=1;i<=n;i++) { if(a[i]!=i) { fl=1; puts("No"); return ; } } if(!fl) { puts("Yes"); return ; } return ;}int main (void){ int t; cin>>t; while(t--) { solve(); } return 0;}
0 0
- HDU5821之映射
- hdu5821
- 贪心---hdu5821
- HDU5821-Ball
- 【1】【匹配】HDU5821 Ball
- 【HDU5821】Ball(贪心)
- hdu5821 Ball 贪心
- hibernate映射之一对一映射
- 20160811多校:(hdu5821 Ball)【贪心+排序】
- 2016多校8 hdu5821 Ball 智商题
- hdu5821(2016多校第8场,暴力)
- hibernate之关于映射
- hibernate之映射组件
- hibernate之映射类型
- Hibernate3 之 继承映射
- 内核数据结构之映射
- hibernate 之 关系映射
- Hibernate之关系映射
- hdu 1002 解析
- OOP面向对象——实例——学生数组
- js之二
- DIY智能插座(四) -- 蓝牙POS编码
- AsyncTask使用详解
- HDU5821之映射
- Spring 配置过程遇到问题锦集
- 大数据IMF传奇行动绝密课程第20课:Top N彻底解秘
- Markdown语法图
- taglist
- unity实现拖拽
- Android开发中进程和线程
- OOP面向对象——实例——运算
- UVA 10047The Monocycle(BFS)