CF1534C
题目简化和分析:
涉及算法:并查集。
为什么要使用并查集:
- 因为交换只能是列交换,并且保证不与别的重复
- 我们通过观察题目发现,某些列之间互为限制关系
- 即如果某列序列排序方式固定,则被限制的列也为固定的
- 此时我们会发现只有两种(一个互相限制的集合列)
既然如此,我们将这每个集合看作为一个联通分量。
用并查集枚举有几个连通分量。
特别的,一列中的两个数肯定互相限制。
如果我们有 \(ans\) 个联通分量。
则答案为 \(2^{ans}\) 。
注意:一定要开 long long
Solution:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define int long long
const int N=4e5+50;
const int mod=1e9+7;
int t,n;
int p[N],a[N],b[N];
int find(int x){
if(x!=p[x]) return p[x]=find(p[x]);
return p[x];
}
int qbow(int a,int b,int m)
{
ll ans=1;
while(b>0)
{
if(b%2!=0)
ans=ans*a%m;
a=a*a%m;
b=b>>1;
}
ans %= m;
return ans;
}
signed main()
{
scanf("%lld",&t);
while(t--){
scanf("%lld",&n);
for(int i=1;i<=n;++i) scanf("%lld",&a[i]),p[i]=i;
for(int i=1;i<=n;++i) {
scanf("%lld",&b[i]);
int fx=find(a[i]),fy=find(b[i]);
if(fx!=fy){
p[fx]=fy;
}
}
int ans=0;
for(int i=1;i<n;++i){
int fx=find(i),fy=find(i+1);
if(fx!=fy){
ans++;
p[fx]=fy;
}
}
printf("%lld\n",qbow(2,ans+1,mod));
}
}
随机推荐
- sql server注入rce实践
背景:在漏洞挖掘中,合理的利用sql注入,可以把注入转换成rce,使一个高危漏洞变成严重漏洞.在红蓝对抗中,利用注入rce,实现内网横向移动.笔者基于漏洞挖掘和红蓝对抗上遇到的sql server注入 ...
- ERP查询Q报表开发代码
一,按照一般ERP开发流程可参考ERP开发流程,直到下载程序. 当我们的查询页签存在栏位需要判断或者特殊处理时,在global中的自定义模组变数下添加,例如: 1 #add-point:自定義模組變數 ...
- RabbitMQ基本配置
1.用户角色配置 自带的guest/guest 超级管理员五中不同角色配置: 普通管理者(management):仅可登陆管理控制台,无法看到节点信息,也无法对策略进行管理. 策略制定者(policy ...
- n皇后问题的分析和实现
N皇后问题的分析和实现 1.实现要求 2.代码实现 1.实现要求 在n*n的方格棋中,放置n个皇后,要求每个皇后不同行,不同列,不同对角线 以行为依据,遍历行,判断行对应的列是否符合要求 判定要求: ...
- 学习LVM:archive 和 backup目录
推荐文档:Logical Volume Manager Administration 在掌握了基本的commands操作后,你是否对操作背后的一些东西产生好奇呢? 程序的configure一般会提供这 ...
- 学习 HBase
1 由来 HBase 应大数据而生,是Apache Hadoop项目孵化而来的一种NoSQL数据库,HBase 是 Hadoop Database 的简称. 它的出现有以下几个原因: 大数据时代的到来 ...
- 用go语言和正则表达式写的linux危险命令拦截
需求如下: package main import "fmt" import "regexp" func main() { var s = "cat ...
- 如何为物联网设备注入“华为云+鸿蒙DNA”?
本文分享自华为云社区<如何为物联网设备注入"华为云+鸿蒙DNA"?看华为云IoT怎么答[华为云IoT +鸿蒙]>,作者: 华为IoT云服务. 根据市场咨询机构预测,20 ...
- Xshell远程连接虚拟机及连接故障排查
用Xshell 远程连接虚拟机 如果按前面博客装好虚拟机,会发现刚装好的虚拟机直接连Xshell连不上,宿主机也ping不通虚拟机,这就需要修改VMware的默认网络配置 修改步骤: 1.在VMwar ...
- Hybird 技术讨论:热更新原理解析
原生应用 VS 混合应用 大家对于原生应用和混合应用已经非常熟悉了,这里就不再进行详细的介绍,用通俗易懂的话解释下他们的一些特点. 1.原生应用 在 Android.iOS 等移动平台上利用提供的 ...