【POI每日题解 #5】 DWU-Double-row
题目链接 [POI2005]DWU-Double-row
wwwww
之前写了半小时 一卡机 没啦QAQ
简单说一下吧 【吐血ing
这道题长得好二分图啊
所以本能地连边
一种是A边 连可交换的数对
一种是B边 连相同的数字
然后才看题干【Facepalm
发现要求使同一侧没有重复颜色的最小交换次数
然后发现 AB都连上仿佛可做
由于最多两个相同数字
数对也是一对一
每一条长度连起来大于1的路都是A-B-A-B……
不在一个联通快里的点没有相互影响
现在考虑同色同侧
只有这种情况 边的起点和终点才在同一侧
自然想到0-1染色
举个栗子
接着我们发现 要使同侧无同色
必须要左侧所有点为同一颜色
因为如果有不同颜色的点
则说明它们之间连接的路上有起点终点同侧的边
也就是同色同侧 不成立
那么怎么改成相反色呢?
每个点连接的1~2条边的另一端点一定是异色 换一下就行了
点的数量没有变 不影响其他点颜色
考虑0,1对称
对于每个联通快 左边1总数和9总数中
取小的那个就是该联通快达到目标状态的最小步数
加起来就好啦
1 void dfs(int x, int fa, int col){ 2 vis[x] = 1; 3 if(x <= n) cnt[col]++; 4 for(int i = head[x]; i != -1; i = edge[i].next){ 5 int vv = edge[i].v; 6 if(vis[vv]) continue; 7 dfs(vv, x, col ^ 1); 8 } 9 }
染色
1 //last[i] 上一个值为i的位置 没有为0 2 for(int i = 1; i <= (n << 1); i++) head[i] = -1; 3 for(int i = 1; i <= n; i++){ 4 int x; scanf("%d", &x); 5 if(last[x]) {add(last[x], i); add(i, last[x]);} 6 else last[x] = i; 7 } 8 for(int i = 1; i <= n; i++){ 9 int x; scanf("%d", &x); 10 add(i, i + n); add(i + n, i); 11 if(last[x]) {add(last[x], i + n); add(i + n, last[x]);} 12 else last[x] = i + n; 13 }
建边
转载于:https://www.cnblogs.com/hjmmm/p/9211061.html
【POI每日题解 #5】 DWU-Double-row相关推荐
- POI读取Excel文件时,row.getCell(0).getStringCellValue()报错:数字转换异常
在进行关键字驱动测试框架的搭建时,我们可能会遇到当单元格里的内容是手机号或者密码等数字时使用row.getCell(0).getStringCellValue()这个方法是会报错的,因为这牵扯到方法过 ...
- poi读取Excel文件执行到row.getCell(0).getStringCellValue()异常
环境说明 POI:poi.3.1.1.jar Excel文件: 具体问题 测试导入Excel文件,并将文件数据批量导入数据库功能时,一直无法成功导入,不打断点没有抛任何异常,部分代码如下: /*** ...
- Leetcode PHP题解--D25 500. Keyboard Row
500. Keyboard Row 题目链接 500. Keyboard Row 题目分析 给定一个字符串数组,返回那些所出现的字母在QWERTY键盘中同一行的字符串. 例如,单词hello中,字母h ...
- 蓝桥杯真题31日冲刺国一 | 每日题解报告 第五天
大家好,我是泡泡,给大家带来今天的题解 目录 一.猴子分香蕉 二.等差数列 三.平方序列 四.倍数问题 一.猴子分香蕉 题目链接:猴子分香蕉 - 蓝桥云课 (lanqiao.cn) 题目要求: 5 只 ...
- 蓝桥杯真题31日冲刺国一 | 每日题解报告 第二十三天
大家好,这里是泡泡,继续给大家带来今天的题解!!有错误各位可以指出!!! 目录 一丶打包 二丶约数个数 三丶寻找三位数 四丶第二点五个不高兴的小明 总结 一丶打包 题目链接:在算法提高里面搜! 题目要 ...
- 蓝桥杯真题31日冲刺国一 | 每日题解报告 第二十二天
大家好,我是泡泡,今天给大家带来五到2020年填空真题和两个打卡题 目录 一丶ASC 二丶排列数 三丶门牌制作 四丶跑步锻炼 五丶蛇形填数 六丶既约分数 七丶七段码 一丶ASC 题目链接:ASC - ...
- 每日题解:LeetCode 718. 最长重复子数组
题目地址 个人博客地址 题目描述 给两个整数数组 A 和 B ,返回两个数组中公共的.长度最长的子数组的长度. 示例:输入: A: [1,2,3,2,1] B: [3,2,1,4,7] 输出:3 解释 ...
- 每日题解:LeetCode 174. 地下城游戏
题目地址 个人博客地址 题目描述 一些恶魔抓住了公主(P)并将她关在了地下城的右下角.地下城是由 M x N 个房间组成的二维网格.我们英勇的骑士(K)最初被安置在左上角的房间里,他必须穿过地下城并通 ...
- 蓝桥杯真题31日冲刺国一 | 每日题解报告 第三十天
大家好,我是泡泡,距离我们的打卡还有一天就结束啦,希望各位都能拿到自己想要的成绩 目录 一丶打印大X 二丶分巧克力 最后的话 一丶打印大X 题目链接:打印大X - 蓝桥云课 (lanqiao.cn) ...
最新文章
- ​如何设计一个安全可靠的 API 接口?
- 【错误记录】Google Play 上架报错 ( 您还没有为此轨道选择任何国家或地区。至少要添加 1 个国家或地区才能发布此版本)
- 如何强化应用安全能力,全面拦截 Log4j 漏洞攻击
- 时序模型预测结果:DM检验含义与python实现
- [转]高性能JavaScript模板引擎原理解析
- HTML创建简单动态时钟
- python实现车牌识别系统
- MSE = Bias² + Variance?什么是“好的”统计估计器
- 转发:五个方向告诉你如何运营好一个公众号!
- w ndows键是哪一个,Windows键是哪个 电脑上的Win键在哪?【图文】
- Dubbo comsumer 远程调用流程分析
- 在iPhone上使用3D Touch
- mos管的rc吸收电路计算_RC吸收电路的设计经验分享
- EasyConnect 安装使用教程 Windows
- 数据分析入门——Matplotlib数据可视化
- The Necklace(UVA10054)
- 2022年首个退役的Apahce大数据项目
- c++ windows网络编程底层涉及库
- 在Linux上安装TimesTen
- 基于javaweb的医院门诊查询系统(前端+后端)