HDU
来源:互联网 发布:javascript获取日期 编辑:程序博客网 时间:2024/06/05 08:37
题意是给两段序列,多次操作,每次可以选一段区间,你可以任意调换第一段序列在这段区间里的数的位置,目的是把第一段调换成第二段区间
看了题解才会系列,记录第一段序列每个数在第二段区间的对应位置(相同的数必然就是按顺序),每次给定的操作,就直接在给的区间内按记录的那个对应位置排序,最后扫一一遍比较一下,仔细想下这种贪心策略的确是可行的,脑洞不够大QAQ
#include<bits/stdc++.h>using namespace std;int n,m;struct node{ int x,index;}a[2000];int now[2000];vector<int>w[2000];int b[2000];int cmp(node u,node v){ return u.index<v.index;}int main(){ int T,n,m,i,l,r; cin>>T; while(T--) { memset(now,0,sizeof(now)); cin>>n>>m; for(i=1;i<=n;i++) { scanf("%d",&a[i].x); w[a[i].x].push_back(i); } int flog=1; for(i=1;i<=n;i++) { scanf("%d",&b[i]); if(w[b[i]].size()>now[b[i]]) a[w[b[i]][now[b[i]]++]].index=i; else flog=0; } while(m--) { scanf("%d %d",&l,&r); sort(a+l,a+r+1,cmp); } for(i=1;i<=n;i++) { if(a[i].x!=b[i]) flog=0; } if(flog) printf("Yes\n"); else printf("No\n"); for(i=0;i<=n;i++) w[i].clear(); } return 0;}
阅读全文
0 0
- hdu
- hdu
- HDU
- hdu ()
- hdu
- hdu
- HDU
- HDU
- hdu
- hdu
- HDU
- Hdu
- hdu
- hdu-
- hdu
- hdu
- hdu
- HDU
- static关键字----主函数解析
- file stat
- JavaScript如何将一个数字转化为2进制
- Python:Tkinter-Toplevel window
- 集合map、泛型
- HDU
- 高铁环境下TD-LTE系统切换方法(1)
- 学习日志2
- Spring-AOP @AspectJ进阶之绑定代理对象
- Centos6.5 安装 RabbitMQ3.6.1
- springmvc上传文件
- JavaScript——回调函数
- Java虚拟机HotSpot笔记
- 实训第七天