题目链接 [POI2005]DWU-Double-row

wwwww

之前写了半小时 一卡机 没啦QAQ

简单说一下吧 【吐血ing

这道题长得好二分图啊

所以本能地连边

一种是A边 连可交换的数对

一种是B边 连相同的数字

然后才看题干【Facepalm

发现要求使同一侧没有重复颜色的最小交换次数

然后发现 AB都连上仿佛可做

由于最多两个相同数字

数对也是一对一

每一条长度连起来大于1的路都是A-B-A-B……

不在一个联通快里的点没有相互影响

现在考虑同色同侧

只有这种情况 边的起点和终点才在同一侧

自然想到0-1染色

举个栗子

接着我们发现 要使同侧无同色

必须要左侧所有点为同一颜色

因为如果有不同颜色的点

则说明它们之间连接的路上有起点终点同侧的边

也就是同色同侧 不成立

那么怎么改成相反色呢?

每个点连接的1~2条边的另一端点一定是异色 换一下就行了

点的数量没有变 不影响其他点颜色

考虑0,1对称

对于每个联通快 左边1总数和9总数中

取小的那个就是该联通快达到目标状态的最小步数

加起来就好啦

 void dfs(int x, int fa, int col){
vis[x] = ;
if(x <= n) cnt[col]++;
for(int i = head[x]; i != -; i = edge[i].next){
int vv = edge[i].v;
if(vis[vv]) continue;
dfs(vv, x, col ^ );
}
}

染色

 //last[i] 上一个值为i的位置 没有为0
for(int i = ; i <= (n << ); i++) head[i] = -;
for(int i = ; i <= n; i++){
int x; scanf("%d", &x);
if(last[x]) {add(last[x], i); add(i, last[x]);}
else last[x] = i;
}
for(int i = ; i <= n; i++){
int x; scanf("%d", &x);
add(i, i + n); add(i + n, i);
if(last[x]) {add(last[x], i + n); add(i + n, last[x]);}
else last[x] = i + n;
}

建边

【POI每日题解 #5】 DWU-Double-row的更多相关文章

  1. 【POI每日题解 #8】DYN-Dynamite

    你问蒟蒻为什么一天写两篇每日题解? 难道每日坚果你不能一天吃两包吗? 题目链接 哇…这道题第一反应就是二分答案[太明显了 枚举答案 就那个“关键节点到这些点中距离的最小值的最大值”[蒟蒻读了好几遍…… ...

  2. 【POI每日题解 #7】TES-Intelligence Test

    题目链接 这道题第一眼看去类比BANK-Cash Dispenser 不过1e6 * 1e6 = 1e12   分分钟MLE啊 想到优化 就yy到一种近似主席树的做法 来维护类似BANK的一堆序列 开 ...

  3. 【POI每日题解 #9】SKA-Piggy Banks

    题目链接 题意: 有一棵环套树 求最少从多少个节点出发能沿边走过整棵树 环套树 并查集求联通块 有几块就砸几个 太简单不发代码了 不过某大佬的环套树找环dfs让我研究了好久… 贴一下以Orz #inc ...

  4. 【POI每日题解 #6】KRA-The Disks

    题目链接 : [POI2006]KRA-The Disks 好有既视感啊... 注意一下输入输出 输入是从上到下输入箱子的宽度 输出是最上面的积木停在哪一层 即 箱子高度 - 积木高度 + 1 在初始 ...

  5. 【POI 每日题解 #4】 [POI2008]MAF-Mafia

    [POI2008]MAF-Mafia 很容易看出是拓扑 但不容易想出来怎么做[可能是我太菜 首先 入度为零的人是肯定死不了的 接着 我们分成环和链分析 对于一个链 最多的情况就是顺着一个个开枪 最后剩 ...

  6. 每日题解: 两数之和 & 有效的括号

  7. 算法(第四版)C# 习题题解——1.1

    写在前面 整个项目都托管在了 Github 上:https://github.com/ikesnowy/Algorithms-4th-Edition-in-Csharp 善用 Ctrl + F 查找题 ...

  8. POI 读取Excel数据

    private List<LeagueGroup> read() throws IOException{ List<LeagueGroup> leagueGroups=new ...

  9. NPOI使用手册[转]

    NPOI使用手册 目录 1.认识NPOI 2. 使用NPOI生成xls文件 2.1 创建基本内容 2.1.1创建Workbook和Sheet 2.1.2创建DocumentSummaryInforma ...

随机推荐

  1. 加解密工具类(含keystore导出pfx)

    java代码如下: package sign; import java.io.FileInputStream; import java.io.FileOutputStream; import java ...

  2. Spring Boot(十六):使用 Jenkins 部署 Spring Boot

    Jenkins 是 Devops 神器,本篇文章介绍如何安装和使用 Jenkins 部署 Spring Boot 项目 Jenkins 搭建.部署分为四个步骤: 第一步,Jenkins 安装 第二步, ...

  3. Python 学习 第四篇:动态类型模型

    Python的变量不用声明,赋值之后就可以直接使用,类型是在运行过程中自动确定的,这就是动态类型模型.该模型把变量和对象设计成两个不同的实体,对象是存储数据的地方,对象的类型是由初始值自动决定的,而变 ...

  4. 收藏pdf 链接

    python 入门: https://files.cnblogs.com/files/minsons/python%E4%BB%8E%E5%85%A5%E9%97%A8%E5%88%B0%E6%B7% ...

  5. Facebook React 和 Web Components(Polymer)对比优势和劣势

    目录结构 译者前言 Native vs. Compiled 原生语言对决预编译语言 Internal vs. External DSLs 内部与外部 DSLs 的对决 Types of DSLs - ...

  6. RetrieveFavicon 获取任何站点的 favicon

    原文发表于我的技术博客 开源了一个获取任何站点 favicon 的类库,供使用. 原文发表于我的技术博客 RetrieveFavicon Project GitHub Retrieve favicon ...

  7. 使用rem进行自适应页面布局

    设计师给到我们前端的设计稿一般是按照iphone6屏幕(iphone6 两倍屏 设备 分辨率(物理尺寸) 屏幕宽高 PPI 状态栏高度 导航栏高度 标签栏高度 iPhone6 750×1334 px ...

  8. 【BUAA软件工程】第一次阅读作业

    BUAA软件工程 第一次阅读作业 项目 内容 这个作业属于哪个课程? 北航软工 这个作业的要求在哪里? 第一次个人作业 我在这个课程的目标是? 学习高效严谨的软件工程开发过程,建立团队意识 这个作业在 ...

  9. Java Script正则表达式语法学习

    今天在做页面交互验证时,在HTML里面第一反应居然用了Java 处理正则表达式的语法... ---------------------------------题记 学习来源 http://www.ru ...

  10. 在XShell中使用sz和rz命令下载和上传文件

    借助XShell,使用linux命令sz可以很方便的将服务器上的文件下载到本地,使用rz命令则是把本地文件上传到服务器 工具/原料   XShell CentOS 6.5 使用sz下载文件   1 输 ...