啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊,比赛的时候直接读错题了,实力带坑队友。。。。

题意:

有两个序列都代表筐,每个筐里只有一个球,然后序列的值代表筐里的球的颜色,问你在m次操作后,a序列的球能否变成b序列的球,每总操作虽然是收集这个区间所有的球,但是每个筐只能放一个,也就是说这只是交换位置的操作。

思路:

补完题,也完全想不出可以用标记下标,然后对m个区间的a数组下标排序,因为在排序的过程中,就会类似于偏移操作,而且是最优操作哦,然后判断一下就好了。哎,实在想不出来,好厉害的方法,+神题;

挫code……

#include<cstdio>
#include<iostream>
#include<math.h>
#include<string.h>
#include<algorithm>
using namespace std;
#define eps 1e-8
typedef __int64 LL; const int N=1e3+10; struct asd{
int id;
int v;
}q[N];
int temp[N]; bool cmp(asd x,asd y)
{
return x.id<y.id;
} int main()
{
int t;
int n,m;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++)
{
scanf("%d",&q[i].v);
q[i].id=-1;
}
for(int i=0;i<n;i++)
{
scanf("%d",&temp[i]);
for(int j=0;j<n;j++)
{
if(q[j].v==temp[i]&&q[j].id==-1)
{
q[j].id=i;
break;
}
}
}
int s,t;
while(m--)
{
scanf("%d%d",&s,&t);
sort(q+s-1,q+t,cmp);
}
bool flag=true;
for(int i=0;i<n;i++)
{
if(q[i].v!=temp[i])
{
flag=false;
break;
}
}
if(flag) puts("Yes");
else puts("No");
}
return 0;
}
/* 100
4 1
1 1 0 0
0 0 0 2
1 4
4 2
1 1 0 0
0 0 0 2
1 4
2 4
*/

最新文章

  1. js获取浏览器高度
  2. 相识从C语言开始
  3. [stm32][ucos][ucgui] 2、LED闪烁、串口、滑块、文本编辑框简单例程
  4. UVA 524
  5. 2015/7/6 (!长期更新!)C语言从零——张呵呵
  6. php 删除语句
  7. C# Setup package Uninstaller
  8. Rails 执行 rails server 报错 Could not find a JavaScript runtime
  9. java系列--批量处理
  10. 11-05-sdust-个人赛赛后随想
  11. 如何搭建SVN的客户端和使用
  12. Linux 安装 JDK 8
  13. 如何给localStorage设置一个过期时间?
  14. Java框架之Spring(二)
  15. OpenLdap 对接内部系统(Gitlab+Wiki+Jumpserver+Openvpn)配置
  16. 在项目中,多个方法会调用相同的sql语句,怎么解决各个方法的不同sql查询,解决冲突。
  17. 从零开始搭建Salt Web之初探salt-api
  18. react 脚手架--create-react-app
  19. UI基础一:简单的BOL查询
  20. [蓝桥杯]ALGO-87.算法训练_字串统计

热门文章

  1. php生成.php文件
  2. 解决查询access数据库含日文出现“内存溢出”问题
  3. 【转载】.NET 框架浅析
  4. 细说linux IPC(三):mmap系统调用共享内存
  5. CloudStack系统虚拟机启动但不在Host表中
  6. hibernate工作原理及作用
  7. Java多态性详解 (父类引用子类对象)
  8. Spring中的IOC容器(学习笔记)
  9. 浅谈 React、Flux 与 Redux
  10. kaminari分页插件样式