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......A_{j-1}}<A_j$说明$A_j$无法交换到位置i,就GG惹
否则把$A_j$设为INF
线段树维护区间取min,单点修改
#include<cstdio>
#include<iostream>
#include<algorithm>
using std::cin;
using std::cout;
using std::min;
using std::max;
#define INF 0x7fffffff
const int maxn = ;
int n;
inline int read() {
int x=,f=;
char c=getchar();
while(c<''||c>'') {
if(c=='-')f=-;c=getchar() ;
}
while(c<=''&&c>='')x=x*+c-'',c=getchar();
return x*f;
}
int a[maxn],b[maxn];
int pos[maxn];
int minn[(maxn<<)+] ;
void merge(int rt) {
minn[rt]=min(minn[rt<<],minn[rt<<|]);
}
void build(int l,int r,int rt) {
if(l==r) {
minn[rt]=a[l];return;
}
int mid = l+r>>;
build(l,mid,rt<<);
build(mid+,r,rt<<|);
merge(rt);
}
int query(int l,int r,int rt,int tl,int tr) {
if(tl<=l&&tr>=r) {
return minn[rt];
}
int mid=l+r>>;
int ans=INF;
if(tl<=mid) ans=min(ans,query(l,mid,rt<<,tl,tr));
if(tr>mid) ans=min(ans,query(mid+,r,rt<<|,tl,tr));
return ans;
}
void modify(int l,int r,int rt,int pos) {
if(l==r) {
minn[rt]=INF;return;
}
int mid= l+r>>;
if(mid>=pos)modify(l,mid,rt<<,pos);
else if(mid<pos)modify(mid+,r,rt<<|,pos);
merge(rt);
}
int main() {
n=read();
for(int i=;i<=n;++i) a[i]=read(),pos[a[i]]=i;
for(int i=;i<=n;++i) b[i]=read();
build(,n,);
for(int i=;i<=n;++i) {
//if(a[i]!=b[i]) {
int p=pos[b[i]];
int tmp=query(,n,,,p);
if(tmp<b[i]) {
cout<<"NO"<<std::endl;return ;
}
else modify(,n,,p);
// }
}
cout<<"YES"<<std::endl;
return ;
}
UOJ 180【UR #12】实验室外的攻防战的更多相关文章
- 实验室外的攻防战 UOJ#180 [树状数组]
实验室外的攻防战 UOJ#180 [树状数组] 题目 时针指向午夜十二点,约定的日子--2月28日终于到来了.随着一声枪响,伏特跳蚤国王率领着他的跳蚤大军们包围了 \(picks\) 博士所在的实验室 ...
- 学长小清新题表之UOJ 180.实验室外的攻防战
学长小清新题表之UOJ 180.实验室外的攻防战 题目描述 时针指向午夜十二点,约定的日子--\(2\)月\(28\)日终于到来了.随着一声枪响,伏特跳蚤国王率领着他的跳蚤大军们包围了 \(picks ...
- UOJ【UR #12】实验室外的攻防战
题意: 给出一个排列$A$,问是否能够经过以下若干次变换变为排列$B$ 变换:若${A_i> A_i+1}$,可以${swap(A_i,A_i+1)}$ 考虑一个数字从A排列到B排列连出来的路径 ...
- 【uoj#180】[UR #12]实验室外的攻防战 结论题+树状数组
题目描述 给出两个长度为 $n$ 的排列 $A$ 和 $B$ ,如果 $A_i>A_{i+1}$ 则可以交换 $A_i$ 和 $A_{i+1}$ .问是否能将 $A$ 交换成 $B$ . 输入 ...
- 【UR #12】实验室外的攻防战(BIT)
[题目链接] http://uoj.ac/problem/180 [题意] 给定两个1..n的排列AB,只有当ai<ai+1才能交换ai和ai+1,问是否能够将A转换为B. [思路] 令a[i] ...
- UOJ180 【UR #12】实验室外的攻防战
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...
- 【UR #12】实验室外的攻防战
UOJ小清新题表 题目内容 依然没有粘题面主要是UOJ的题面都太长了qwq UOJ链接 一句话题意:给出两个序列 \(A\) 和 \(B\),对于 \(A\) 进行若干次操作,每次给出一个 \(i\) ...
- Android安全攻防战,反编译与混淆技术完全解析(下)
在上一篇文章当中,我们学习了Android程序反编译方面的知识,包括反编译代码.反编译资源.以及重新打包等内容.通过这些内容我们也能看出来,其实我们的程序并没有那么的安全.可能资源被反编译影响还不是很 ...
- Android安全攻防战,反编译与混淆技术完全解析(上)
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/49738023 之前一直有犹豫过要不要写这篇文章,毕竟去反编译人家的程序并不是什么值 ...
随机推荐
- Python 模块:random 随机数生成
Python中的random模块用于生成随机数. 使用该模块之前需要 import random 几个常用的函数用法: 1.random.random 函数原型: random.random() 用于 ...
- 给vmstat加上时间戳
vmstat -n 5 | awk '{print strftime("[%Y-%m-%d %H:%M:%S]"),$0}' 或者 vmstat -n 5 | awk '{ pri ...
- Convert.ToBase64String(Byte[])和Encoding.UTF8.GetString(Byte[])的区别
Encoding.UTF8.GetString是针对使用utf8编码得到的字符串对应的byte[]使用,可以还原我们能看懂的字符串而Convert.ToBase64String是对任意byte[]都可 ...
- 设计模式之模板方法模式 templateMethod
代码实现 public abstract class BankTemplateMethod { //具体方法 public void takeNumber(){ System.out.println( ...
- ironic baremetal node rescue/unrescue mode
环境ironic-api ironic-conductor,ironicclient均升级为Queens版本 官网说明API版本为1.38才支持rescue/unrescue,所以修改下openrc文 ...
- CentOS下创建和root权限完全相同用户
新建用户 [root@bagon ~]# useradd newroot 修改密码 [root@bagon ~]# passwd newroot 编辑/etc/passwd,找到新建用户那一行 new ...
- Android记事本11
昨天: Activity的启动模式. 今天: 分析了一些网上的例子的源码. 遇到问题: 无.
- PHP面向对象关键词static 、self
知识点: 一.static可以修饰类内的属性或方法,被修饰的属性或方法在类外部,不能被实例化成对象访问,而是使用类本身进行访问,而静态的方法如果想使用静态的属性,则需要用self::这样的写法来访问静 ...
- ESXI6.0 时间(时区)显示不一致
ESXI6.0 时间(时区)显示不一致 来源 http://blog.51cto.com/jdonghong/1957118 近日由于设置ESXI计划任务,无意间发现了esxi服务器客服端时间和系统显 ...
- ss安装教程
https://teddysun.com/342.html 加速 wget –no-check-certificate https://github.com/teddysun/across/raw/m ...