假设一列交换表示为1,不换表示为0.

  身高相同的两个人相当于给其中两列了一个限制条件,要么是两个必须相等,要么一个为零一个为一。

  有了关系后我们就可以把每列当成一个点建边,边权为0表示必须相同,1为必须不同,这样每个联通块会被分为两个确定的集合,把$size$小的交换就行了。

  

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define N 100005
using namespace std;
int n;
int cnt[];
int v[N],vis[N];
int be[N],pos[N];
int head[N],ver[N],nxt[N],tot,quan[N];
void add(int a,int b,int c)
{
tot++;nxt[tot]=head[a];head[a]=tot;quan[tot]=c;ver[tot]=b;return ;
}
void dfs(int x,int b)
{
vis[x]=;cnt[b]++;
for(int i=head[x];i;i=nxt[i])
{
if(!vis[ver[i]])
{
dfs(ver[i],(b+quan[i])&);
}
}
return ;
}
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
{
int tmp;
scanf("%d",&tmp);
if(be[tmp])
{
add(be[tmp],i,);
add(i,be[tmp],);
}
else be[tmp]=i,pos[tmp]=;
}
for(int i=;i<=n;i++)
{
int tmp;
scanf("%d",&tmp);
if(be[tmp])
{
if(pos[tmp]==)
{
add(be[tmp],i,);
add(i,be[tmp],);
}
else
{
add(be[tmp],i,);
add(i,be[tmp],);
}
}
else be[tmp]=i,pos[tmp]=;
}
int ans=;
for(int i=;i<=n;i++)
{
if(!vis[i])
{
cnt[]=cnt[]=;
dfs(i,);
ans+=min(cnt[],cnt[]);
}
}
printf("%d\n",ans);
return ;
}

  

bzoj 1539: [POI2005]Dwu-Double-row的更多相关文章

  1. bzoj 1537: [POI2005]Aut- The Bus 线段树

    bzoj 1537: [POI2005]Aut- The Bus 先把坐标离散化 设f[i][j]表示从(1,1)走到(i,j)的最优解 这样直接dp::: f[i][j] = max{f[i-1][ ...

  2. Bzoj 1532: [POI2005]Kos-Dicing 二分,网络流

    1532: [POI2005]Kos-Dicing Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1373  Solved: 444[Submit][St ...

  3. BZOJ 1537: [POI2005]Aut- The Bus(dp + BIT)

    对y坐标离散化, 然后按x坐标排序, dp. 一个点(x, y), 设到达这个点接到的最多乘客数为t, 那么t可以用来更新y'>=y的所有点.用树状数组维护最大值. -------------- ...

  4. BZOJ 1529: [POI2005]ska Piggy banks( 并查集 )

    每一连通块砸开一个就可以拿到所有的钱, 所以用并查集求连通块数 ------------------------------------------------------------------- ...

  5. BZOJ 1531: [POI2005]Bank notes( 背包 )

    多重背包... ---------------------------------------------------------------------------- #include<bit ...

  6. BZOJ.1535.[POI2005]SZA-Template(KMP DP)

    BZOJ 洛谷 \(Description\) 给定一个字符串\(s\),求一个最短的字符串\(t\)满足,将\(t\)拼接多次后,可以得到\(s\).拼接是指,可以将\(t\)放在当前串的任意位置, ...

  7. 【刷题】BZOJ 1537 [POI2005]Aut- The Bus

    Description Byte City 的街道形成了一个标准的棋盘网络 – 他们要么是北南走向要么就是西东走向. 北南走向的路口从 1 到 n编号, 西东走向的路从1 到 m编号. 每个路口用两个 ...

  8. bzoj 1528 [POI2005]sam-Toy Cars 堆维护+贪心

    1528: [POI2005]sam-Toy Cars Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 716  Solved: 306[Submit][S ...

  9. Bzoj 1537: [POI2005]Aut- The Bus 题解 [由暴力到正解]

    1537: [POI2005]Aut- The Bus Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 387  Solved: 264[Submit][S ...

随机推荐

  1. codeforces 1140E Palindrome-less Arrays

    题目链接:http://codeforces.com/contest/1140/problem/E 题目大意: 如果一个数组的存在一个奇数长的回文就不好. 不是不好的数组是好的. 你可以把-1用1到k ...

  2. Linear Regression and Maximum Likelihood Estimation

    Imagination is an outcome of what you learned. If you can imagine the world, that means you have lea ...

  3. React Native移动开发实战-4-Android平台的适配原理

    打开Android开发工具Android Studio,选择菜单 Open an existing AndroidStudio project,打开ch04项目的android文件夹,如图5.8所示. ...

  4. 搬运_maven打包

    参考文章 利用Maven插件将依赖包.jar/war包及配置文件输出到指定目录 <build> <plugins> <plugin> <groupId> ...

  5. No.111_第四次团队会议

    后端的偏执 啊,这次又轮到我写团队博客了. 此时又是深夜,窗外漫天繁星.舍友的呼噜声惊吓了月亮,它害羞地跑回了云里去. 我关上灯拔掉机械,悄悄拿着电脑上了床,写这次的团队博客.曾经觉得自己绝对不会晚睡 ...

  6. 敏捷开发与XP实践

    北京电子科技学院(BESTI) 实  验  报  告 课程: Java        班级:1352          姓名:黄伟业         学号:20135215 成绩:           ...

  7. asp.net登录验证FormsAuthenticationTicket和FormsAuthentication类

    登录部分使用的类 FormsAuthentication   为 Web 应用程序管理 Forms 身份验证服务. 配置启用身份验证,WEB.config配置: <system.web> ...

  8. Hibernate 延迟加载 分析

    出处:http://www.ibm.com/developerworks/cn/java/j-lo-hibernatelazy/#icomments Hibernate 的延迟加载(lazy load ...

  9. c++的继承方式

    c++的继承,因为学完过的时间太长,忘了,现在再温习一下. c++的继承方式 1. 公有继承(public) 2. 私有继承(private) 3. 保护继承(protected) 从一个基类派生的继 ...

  10. PAT 1147 Heaps

    https://pintia.cn/problem-sets/994805342720868352/problems/994805342821531648 In computer science, a ...