题面

题目传送门

解法

思路还是比较精妙的

  • 我们不妨假设a[i]a[i]a[i]表示iii这一列是否交换两行的数
  • 然后对于一个数xxx,假设它出现的位置分别为第iii列和第jjj列,如果这两个位置在同一行,那么i,ji,ji,j之间连接一条为111的无向边,表示a[i]≠a[j]a[i]≠a[j]a[i]̸​=a[j],否则在i,ji,ji,j之间连接一条为000的无向边,表示a[i]=a[j]a[i]=a[j]a[i]=a[j]
  • 然后这个图会被分成若干个连通块,对于每一个连通块,假设a[i]=0a[i]=0a[i]=0的有xxx个, a[i]=1a[i]=1a[i]=1的有yyy个,那么这个连通块对答案的贡献为min(x,y)min(x,y)min(x,y),这个应该比较显然
  • 时间复杂度:O(n)O(n)O(n)

代码

#include <bits/stdc++.h>
#define N 100010
using namespace std;
template <typename node> void chkmax(node &x, node y) {x = max(x, y);}
template <typename node> void chkmin(node &x, node y) {x = min(x, y);}
template <typename node> void read(node &x) {x = 0; int f = 1; char c = getchar();while (!isdigit(c)) {if (c == '-') f = -1; c = getchar();}while (isdigit(c)) x = x * 10 + c - '0', c = getchar(); x *= f;
}
struct Edge {int next, num, v;} e[N * 4];
int s0, s1, cnt, vis[N];
vector <int> pos[N];
void add(int x, int y, int v) {e[++cnt] = (Edge) {e[x].next, y, v};e[x].next = cnt;
}
void dfs(int x, int col) {if (col == 0) s0++; else s1++; vis[x] = 1;for (int p = e[x].next; p; p = e[p].next) {int k = e[p].num, v = e[p].v;if (vis[k]) continue; dfs(k, col ^ v);}
}
int main() {int n, mx = 0; read(n); cnt = n;for (int i = 1; i <= n; i++) {int x; read(x); chkmax(mx, x);pos[x].push_back(i);}for (int i = 1; i <= n; i++) {int x; read(x); chkmax(mx, x);pos[x].push_back(-i);}for (int i = 1; i <= mx; i++) {if (pos[i].size() < 2) continue;int x = pos[i][0], y = pos[i][1], tx = abs(x), ty = abs(y);if (x < 0 && y > 0 || x > 0 && y < 0) add(ty, tx, 0), add(tx, ty, 0);else add(ty, tx, 1), add(tx, ty, 1);}int ans = 0;for (int i = 1; i <= n; i++)if (!vis[i]) {s0 = 0, s1 = 0;dfs(i, 0); ans += min(s0, s1);}cout << ans << "\n";return 0;
}

bzoj 1539 [POI2005]Dwu-Double-row 建图+思路相关推荐

  1. bzoj 1539: [POI2005]Dwu-Double-row

    假设一列交换表示为1,不换表示为0. 身高相同的两个人相当于给其中两列了一个限制条件,要么是两个必须相等,要么一个为零一个为一. 有了关系后我们就可以把每列当成一个点建边,边权为0表示必须相同,1为必 ...

  2. POJ 3281 -- Dining(最大流,拆点建图)

    题目链接 Description Cows are such finicky eaters. Each cow has a preference for certain foods and drink ...

  3. BZOJ.3218.a + b Problem(最小割ISAP 可持久化线段树优化建图)

    BZOJ UOJ 首先不考虑奇怪方格的限制,就是类似最大权闭合子图一样建图. 对于奇怪方格的影响,显然可以建一条边\((i\to x,p_i)\),然后由\(x\)向\(1\sim i-1\)中权值在 ...

  4. bzoj 4883 [Lydsy1705月赛]棋盘上的守卫 题解(思维,建图,最小基环森林)

    原题链接: bzoj 题意简述 一个 n ∗ m n*m n∗m的矩阵,要放 n + m n+m n+m个守卫,每个守卫只能守住所在行或所在列(只能选择一个).在 i , j i,j i,j位置上放守 ...

  5. BZOJ 4242 水壶(BFS建图+最小生成树+树上倍增)

    题意 JOI君所居住的IOI市以一年四季都十分炎热著称. IOI市是一个被分成纵H*横W块区域的长方形,每个区域都是建筑物.原野.墙壁之一.建筑物的区域有P个,编号为1...P. JOI君只能进入建筑 ...

  6. ORBSLAM2实验记录(1)——稠密建图

    写在前面 近期又重新拾起ORBSLAM2的学习,换装了Ubuntu16.04,配置环境的bug比18.04少了不少,可以说是一路顺利,关于环境配置的问题,网络上可以说是众说纷纭,如果你打算使用Ubun ...

  7. ORB_SLAM2局部建图线程

      局部建图线程入口:可执行程序在初始化三个线程的时候,在System.cc的构造函数中进入局部建图线程 mpLocalMapper = new LocalMapping(mpMap, //指定使io ...

  8. POJ 2516 -- Minimum Cost (最小费用最大流, 必须分开建图)

    题目链接 Description Dearboy, a goods victualer, now comes to a big problem, and he needs your help. In ...

  9. hdu 4885 (n^2*log(n)推断三点共线建图)+最短路

    题意:车从起点出发,每次仅仅能行驶L长度,必需加油到满,每次仅仅能去加油站或目的地方向,路过加油站就必需进去加油,问最小要路过几次加油站. 開始时候直接建图,在范围内就有边1.跑最短了,再读题后发现, ...

最新文章

  1. antv g6 禁止移动_antV G6流程图在Vue中的使用
  2. IIS7.5 错误代码0x8007007e HTTP 错误 500.19
  3. 【学习笔记】Django
  4. 三大数据驱动机制,助力文娱企业打造高留存、高转化增长闭环
  5. MySQL 中删除的数据都去哪儿了?
  6. 当我们谈论 996 的时候我们在谈论什么?
  7. python多进程间通信
  8. Excel实验情况对比排序
  9. 学计算机的感想300字,大学生计算机实训心得体会3篇
  10. M1卡读写软件C#源代码
  11. Word转换PDF:pdf虚拟打印机怎么用操作技巧详解
  12. 图文实例带你了解香农编码和霍夫曼编码
  13. 花了一万多买的web前端全套教程,现在分享给大家
  14. java语言中标识符大小写不敏感_下列叙述中,正确的是()。A.Java语言的标识符是区分大小写的B.源文件名与public类名可...
  15. ipoo3可以用鸿蒙,真正全网通!iQOO 3支持双模六频5G,出国也能用
  16. Mac上doc 转docx
  17. redis分布式锁的原子保证
  18. 如何用大数据进行宠物店选址要素分析
  19. xp下,输入法不能删除,也不能添加(所有添加和删除的按钮都为灰色)的解决方法
  20. Linux系统中彻底隐藏你的进程(隐藏后如何恢复显示?)

热门文章

  1. 消费提示:2012春运火车票 网上订票攻略
  2. Linux 系统 pptpd+radius+mysql 安装攻略
  3. 我们应该如何看待牛市熊市?到了牛市熊市有什么标志吗?
  4. 什么样的人适合当软件工程师?
  5. 2008 r2 server sql 中文版补丁_Microsoft SQL Server 2008 R2 SP1补丁 32位 官方免费版(附安装教程)...
  6. windows 2008 r2或win7安装SP1补丁,安装sqlserver 2012
  7. Corner芯片TT,FF,SS
  8. 对链特异性建库的理解
  9. 安装Burp suitev2021.8.1过程中出现错误--illegal-access=permit
  10. 提升色觉障碍用户的视频观看体验——播放器色觉辅助功能开发