Atcoder ABC296 F

F - Simultaneous Swap

链接:

F - Simultaneous Swap (atcoder.jp)

简要题意:

  • 问题陈述

    给你两个 \(N\) 数字序列: \(A=(A_1,A_2,\ldots,A_N)\) 和 \(B=(B_1,B_2,\ldots,B_N)\) 。

    高桥可以重复下面的操作任意多次(可能为零)。

    在 \(1\) 和 \(N\) 之间选择三个成对的不同整数 \(i\) 、 \(j\) 和 \(k\) 。

    把 \(A\) 的 \(i\) -th 和 \(j\) -th 元素对调,把 \(B\) 的 \(i\) -th 和 \(k\) -th 元素对调。

    如果高桥有办法重复操作使 \(A\) 和 \(B\) 相等,打印 "Yes";否则,打印 "No"。

    在这里, \(A\) 和 \(B\) 相等的条件是,对于每一个 \(1\leq i\leq N\) , \(A\) 的 \(i\) 个元素和 \(B\) 的 \(i\) 个元素相等。

思路:

  • 首先a与b数组元素不相同的情况下一定是NO

  • 我们发现一个重要性质,我们可以保持A不动,只改变B,操作如下

  • 我们发现b数组可以循环轮换排列,并且,如果b数组或者a数组有两个相同元素,那么她们可以通过反复横跳使得顺序一致

  • 如果两个数组中分别都没有重复元素

  • 我们考虑一次上图循环置换顺序,只会让逆序对+2,0,-2,这就意味着奇偶性相同ab数组一定可以转换,反之则不能

代码:

const int N = 200005;
int tr1[N],tr2[N];
int n;
int lb(int x){return x&-x;}
void add(int k,int tr[]){
for(int i = k;i < N;i+=lb(i)) tr[i]++;
}
int qy(int k,int tr[]){
int res = 0;
for(int i = k;i > 0;i-=lb(i)) res+=tr[i];
return res;
}
void solve(){ cin >> n;
map<int,int> h1;
map<int,int> h2;
int a[n + 1],b[n+1];
int c1 = 0,c2 = 0;
for(int i = 1;i<=n;i++){
cin >> a[i];
c1+=qy(a[i],tr1);
add(a[i],tr1);
h1[a[i]]++; }
for(int i = 1;i<=n;i++){
cin >> b[i];
c2+=qy(b[i],tr2);
add(b[i],tr2);
h2[b[i]]++; }
if(h1!=h2){
cout << "No" << endl;
return ;
}
for(int i = 1;i<=n;i++){
if(h2[b[i]]>=2||h1[a[i]]>=2){
cout << "Yes" << endl;
return;
}
}
if(c1%2!=c2%2){
cout << "No" << endl;
}else{
cout << "Yes" << endl;
} }

Atcoder ABC296 F的更多相关文章

  1. Atcoder abc187 F Close Group(动态规划)

    Atcoder abc187 F Close Group 题目 给出一张n个点,m条边的无向图,问删除任意数量的边后,留下来的最少数量的团的个数(\(n \le 18\) ) 题解 核心:枚举状态+动 ...

  2. 【ATcoder s8pc_3 F】 寿司

    http://s8pc-3.contest.atcoder.jp/tasks/s8pc_3_f (题目链接) 题意 有一个长度为$N$的数列$A$,初始为$0$.$Q$次操作,每次两个参数$x,y$. ...

  3. [AtCoder ARC076] F Exhausted?

    霍尔定理 + 线段树? 咱学学霍尔定理... 霍尔定理和二分图完美匹配有关,具体而言,就是定义了二分图存在完美匹配的充要条件: 不妨设当前二分图左端集合为 X ,右端集合为 Y ,X 与 Y 之间的边 ...

  4. 【Atcoder ARC060F】最良表現 / Best Representation

    Atcoder ARC060 F 题意:给一个串,求将其分成最少的没有循环节的串的种数. 思路:先求KMP的\(fail\)数组.然后发现最少的串数只有三种可能:\(1\).\(2\).\(n\). ...

  5. JOI2017 春季合宿:Railway Trip

    自己的AC做法似乎离正解偏了十万八千里而且复杂了不少--不管怎样还是记录下来吧. 题意: 题目链接: JOISC2017 F - AtCoder JOISC2017 F - LOJ \(N\)个车站排 ...

  6. Mysql_以案例为基准之查询

    查询数据操作

  7. [atcoder contest 010] F - Tree Game

    [atcoder contest 010] F - Tree Game Time limit : 2sec / Memory limit : 256MB Score : 1600 points Pro ...

  8. AtCoder Grand Contest 002 F:Leftmost Ball

    题目传送门:https://agc002.contest.atcoder.jp/tasks/agc002_f 题目翻译 你有\(n*k\)个球,这些球一共有\(n\)种颜色,每种颜色有\(k\)个,然 ...

  9. AtCoder Grand Contest 017 F - Zigzag

    题目传送门:https://agc017.contest.atcoder.jp/tasks/agc017_f 题目大意: 找出\(m\)个长度为\(n\)的二进制数,定义两个二进制数的大小关系如下:若 ...

  10. AtCoder Regular Contest 074 F - Lotus Leaves

    题目传送门:https://arc074.contest.atcoder.jp/tasks/arc074_d 题目大意: 给定一个\(H×W\)的网格图,o是可以踩踏的点,.是不可踩踏的点. 现有一人 ...

随机推荐

  1. Mysql 使用(二)

    1 启动: 2 net start mysql 3 4 进入: 5 mysql -uroot -pmysql 6 7 显示数据库: 8 show databases; 9 10 使用数据库: 11 u ...

  2. 【论文阅读】Pylot: A Modular Platform for Exploring Latency-Accuracy Tradeoffs in Autonomous Vehicles

    参考与前言 resource 代码:https://github.com/erdos-project/pylot 论文地址:https://www.ionelgog.org/data/papers/2 ...

  3. mysql求同比环比

    -- 参考:SQL计算月环比.月同比_路易吃泡面的博客-CSDN博客 -- mysql同比环比 drop table if EXISTS ordertable; create table ordert ...

  4. Simple WPF: WPF 自定义按钮外形

    最新内容优先发布于个人博客:小虎技术分享站,随后逐步搬运到博客园. WPF的按钮提供了Template模板,可以通过修改Template模板中的内容对按钮的样式进行自定义,完整代码Github自取. ...

  5. HTML5、CSS3 里面都新增了那些新特性?

    HTML5 新的语义标签 article 独立的内容. aside 侧边栏. header 头部. nav 导航. section 文档中的节. footer 页脚. 画布(Canvas) API 地 ...

  6. Mybatis XXXMapper.xml映射文件配置

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "- ...

  7. C++ Constructor And Destructor

    if you have problems with constructors and destructors, you can insert such print statements in cons ...

  8. Nginx 可视化配置神器NginxConfig

    Nginx 是前后端开发工程师必须掌握的神器.该神器有很多使用场景:比如反向代理.负载均衡.动静分离.跨域等等. 把 Nginx 下载下来打开 conf 文件夹的 nginx.conf 文件,Ngin ...

  9. 网易数帆内核团队:memory cgroup 泄漏问题的分析与解决

    memory cgroup 泄露是 K8s(Kubernetes) 集群中普遍存在的问题,轻则导致节点内存资源紧张,重则导致节点无响应只能重启服务器恢复:大多数的开发人员会采用定期 drop cach ...

  10. UE MultiLineTraceByChannel函数返回只有一个对象的问题

    问题描述 MultiLineTraceByChannel,看函数名字是返回射线检测到的所有对象,实际使用过程中,发现返回的数组中只又一个对象. Multi Line Trace by Channel ...