UOJ小清新题表

题目内容

依然没有粘题面主要是UOJ的题面都太长了qwq

UOJ链接

一句话题意:给出两个序列 \(A\) 和 \(B\),对于 \(A\) 进行若干次操作,每次给出一个 \(i\),若 \(A_i>A_{i+1}\) 则可交换。问能否通过若干次操作后把 \(A\) 序列转化为 \(B\) 序列。

数据范围

子任务 分值 限制与约定
1 24 \(n\leq 8\)
2 32 \(n\leq 1000\)
3 44 \(n\leq 100000\)

思路

好像是一道三维偏序题。可以先想想冒泡排序的运行方式。

首先有一个显然的性质。若遍历到两个数 \(i\) 和 \(j\) 且 \(i<j\),若在 \(A\) 序列中 \(i\) 在 \(j\) 之前,在 \(B\) 序列中 \(i\) 在 \(j\) 之后,那么永远都无法将其转化为符合条件的位置。当我们遍历到这样的情况的时候,直接输出NO就完了。

形式化的说,不满足条件的限制就是:存在对于 \(i<j\) 的两个数,使得 \(a[i]<a[j]\),\(b[i]>b[j]\)。其中 \(a[i]\) 表示 \(i\) 在 \(A\) 序列的位置,\(b[i]\) 表示 \(i\) 在 \(B\) 序列中的位置,这个直接在读入的时候就已经处理好了。

此题判断其存在性即可。对于 \(i<j\),可以从小到大枚举每一个 \(j\),找出所有的 \(a[i]<a[j]\) 中 \(b[i]\) 的最大值,判断其是否大于 \(b[j]\),若不符合,加入 \(j\) 即可,否则直接输出NO

若最终都无法找到,则答案为YES

然后剩下的就是随便找一个数据结构维护一下最大值就行了,这里采用的是树状数组。

可能有点混乱,看代码应该能懂

代码

#include <bits/stdc++.h>
using namespace std;
const int maxn=1e5+10;
int n;
int a[maxn],b[maxn],tree[maxn]; inline int read(){
int x=0,fopt=1;char ch=getchar();
for(;!isdigit(ch);ch=getchar())if(ch=='-')fopt=-1;
for(;isdigit(ch);ch=getchar())x=(x<<3)+(x<<1)+ch-48;
return x*fopt;
} inline int lowbit(int x){
return x&-x;
} inline void modify(int x,int b){
while(x<=n){
tree[x]=max(tree[x],b);
x+=lowbit(x);
}
} inline int query(int x){
int ans=-1;
while(x){
ans=max(ans,tree[x]);
x-=lowbit(x);
}
return ans;
} int main(){
n=read();
for(int i=1;i<=n;i++)
a[read()]=i;
for(int i=1;i<=n;i++)
b[read()]=i;
for(int i=1;i<=n;i++)
if(query(a[i])>b[i])return puts("NO"),0;//询问所有下标小于等于i的最大值
else modify(a[i],b[i]);//交换操作,直接一步到胃
puts("YES");
return 0;
}

【UR #12】实验室外的攻防战的更多相关文章

  1. 实验室外的攻防战 UOJ#180 [树状数组]

    实验室外的攻防战 UOJ#180 [树状数组] 题目 时针指向午夜十二点,约定的日子--2月28日终于到来了.随着一声枪响,伏特跳蚤国王率领着他的跳蚤大军们包围了 \(picks\) 博士所在的实验室 ...

  2. 学长小清新题表之UOJ 180.实验室外的攻防战

    学长小清新题表之UOJ 180.实验室外的攻防战 题目描述 时针指向午夜十二点,约定的日子--\(2\)月\(28\)日终于到来了.随着一声枪响,伏特跳蚤国王率领着他的跳蚤大军们包围了 \(picks ...

  3. 【UR #12】实验室外的攻防战(BIT)

    [题目链接] http://uoj.ac/problem/180 [题意] 给定两个1..n的排列AB,只有当ai<ai+1才能交换ai和ai+1,问是否能够将A转换为B. [思路] 令a[i] ...

  4. UOJ【UR #12】实验室外的攻防战

    题意: 给出一个排列$A$,问是否能够经过以下若干次变换变为排列$B$ 变换:若${A_i> A_i+1}$,可以${swap(A_i,A_i+1)}$ 考虑一个数字从A排列到B排列连出来的路径 ...

  5. UOJ180 【UR #12】实验室外的攻防战

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...

  6. UOJ 180【UR #12】实验室外的攻防战

    http://uoj.ac/contest/25/problem/180 从前往后对比串A,B 当$A_i,B_i$不相同时找到$B_i$在A中的位置j 若$min{A_1,A_2,A_3...... ...

  7. 【uoj#180】[UR #12]实验室外的攻防战 结论题+树状数组

    题目描述 给出两个长度为 $n$ 的排列 $A$ 和 $B$ ,如果 $A_i>A_{i+1}$ 则可以交换 $A_i$ 和 $A_{i+1}$ .问是否能将 $A$ 交换成 $B$ . 输入 ...

  8. Android安全攻防战,反编译与混淆技术完全解析(下)

    在上一篇文章当中,我们学习了Android程序反编译方面的知识,包括反编译代码.反编译资源.以及重新打包等内容.通过这些内容我们也能看出来,其实我们的程序并没有那么的安全.可能资源被反编译影响还不是很 ...

  9. Android安全攻防战,反编译与混淆技术完全解析(上)

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/49738023 之前一直有犹豫过要不要写这篇文章,毕竟去反编译人家的程序并不是什么值 ...

随机推荐

  1. 洛谷 P4072 [SDOI2016]征途 斜率优化DP

    洛谷 P4072 [SDOI2016]征途 斜率优化DP 题目描述 \(Pine\) 开始了从 \(S\) 地到 \(T\) 地的征途. 从\(S\)地到\(T\)地的路可以划分成 \(n\) 段,相 ...

  2. js去掉最右边的逗号

    str=(str.substring(str.length-1)==',')?str.substring(0,str.length-1):str;

  3. 【吴恩达课程使用】anaconda (python 3.7) win10安装 tensorflow 1.8 cpu版

    [吴恩达课程使用]anaconda (python 3.7) win10安装 tensorflow 1.8 目前tensorflow是只支持到python3.6的,anaconda最新版本已经到pyt ...

  4. awk使用说明(复制别人的)

    来源:http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858470.html 简介 awk是一个强大的文本分析工具,相对于grep的查找,se ...

  5. 云计算openstack核心组件——cinder存储服务(11)

    一.cinder 介绍:   理解 Block Storage 操作系统获得存储空间的方式一般有两种: 通过某种协议(SAS,SCSI,SAN,iSCSI 等)挂接裸硬盘,然后分区.格式化.创建文件系 ...

  6. 【域控日志分析篇】CVE-2020-1472-微软NetLogon权限提升-执行Exp后域控日志分析与事件ID抓取

    前言:漏洞复现篇见:https://www.cnblogs.com/huaflwr/p/13697044.html 本文承接上一篇,简单过滤NetLogon漏洞被利用后,域控上的安全及系统日志上可能需 ...

  7. 4.Scala语法02 - 函数

  8. Hadoop学习笔记(一):ubuntu虚拟机下的hadoop伪分布式集群搭建

    hadoop百度百科:https://baike.baidu.com/item/Hadoop/3526507?fr=aladdin hadoop官网:http://hadoop.apache.org/ ...

  9. Element-UI:级联选择器:Cannot read property 'level' of null"

    当级联选择时如果其选择内容需要动态变化时,如果没有选择就不会报错的:而当做出选择后又要动态变化级联选择器内容时,就会报错/ 错误:这个错误的原因是当选择后,再更新内容时,选择器仍会关联原来的数据,导致 ...

  10. java基础篇1

    JAVA基础篇1 注释 单行注释 //这是一个单行注释,由两个斜杠组成,不能嵌套多行注释 多行注释 /*这是一个 多行注释 ,//里面不能嵌套多行注释, 但是可以嵌套单行注释*/ 文档注释 /**ja ...