题目链接 [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相关推荐

  1. POI读取Excel文件时,row.getCell(0).getStringCellValue()报错:数字转换异常

    在进行关键字驱动测试框架的搭建时,我们可能会遇到当单元格里的内容是手机号或者密码等数字时使用row.getCell(0).getStringCellValue()这个方法是会报错的,因为这牵扯到方法过 ...

  2. poi读取Excel文件执行到row.getCell(0).getStringCellValue()异常

    环境说明 POI:poi.3.1.1.jar Excel文件: 具体问题 测试导入Excel文件,并将文件数据批量导入数据库功能时,一直无法成功导入,不打断点没有抛任何异常,部分代码如下: /*** ...

  3. Leetcode PHP题解--D25 500. Keyboard Row

    500. Keyboard Row 题目链接 500. Keyboard Row 题目分析 给定一个字符串数组,返回那些所出现的字母在QWERTY键盘中同一行的字符串. 例如,单词hello中,字母h ...

  4. 蓝桥杯真题31日冲刺国一 | 每日题解报告 第五天

    大家好,我是泡泡,给大家带来今天的题解 目录 一.猴子分香蕉 二.等差数列 三.平方序列 四.倍数问题 一.猴子分香蕉 题目链接:猴子分香蕉 - 蓝桥云课 (lanqiao.cn) 题目要求: 5 只 ...

  5. 蓝桥杯真题31日冲刺国一 | 每日题解报告 第二十三天

    大家好,这里是泡泡,继续给大家带来今天的题解!!有错误各位可以指出!!! 目录 一丶打包 二丶约数个数 三丶寻找三位数 四丶第二点五个不高兴的小明 总结 一丶打包 题目链接:在算法提高里面搜! 题目要 ...

  6. 蓝桥杯真题31日冲刺国一 | 每日题解报告 第二十二天

    大家好,我是泡泡,今天给大家带来五到2020年填空真题和两个打卡题 目录 一丶ASC 二丶排列数 三丶门牌制作 四丶跑步锻炼 五丶蛇形填数 六丶既约分数 七丶七段码 一丶ASC 题目链接:ASC - ...

  7. 每日题解:LeetCode 718. 最长重复子数组

    题目地址 个人博客地址 题目描述 给两个整数数组 A 和 B ,返回两个数组中公共的.长度最长的子数组的长度. 示例:输入: A: [1,2,3,2,1] B: [3,2,1,4,7] 输出:3 解释 ...

  8. 每日题解:LeetCode 174. 地下城游戏

    题目地址 个人博客地址 题目描述 一些恶魔抓住了公主(P)并将她关在了地下城的右下角.地下城是由 M x N 个房间组成的二维网格.我们英勇的骑士(K)最初被安置在左上角的房间里,他必须穿过地下城并通 ...

  9. 蓝桥杯真题31日冲刺国一 | 每日题解报告 第三十天

    大家好,我是泡泡,距离我们的打卡还有一天就结束啦,希望各位都能拿到自己想要的成绩 目录 一丶打印大X 二丶分巧克力 最后的话 一丶打印大X 题目链接:打印大X - 蓝桥云课 (lanqiao.cn) ...

最新文章

  1. ​如何设计一个安全可靠的 API 接口?
  2. 【错误记录】Google Play 上架报错 ( 您还没有为此轨道选择任何国家或地区。至少要添加 1 个国家或地区才能发布此版本)
  3. 如何强化应用安全能力,全面拦截 Log4j 漏洞攻击
  4. 时序模型预测结果:DM检验含义与python实现
  5. [转]高性能JavaScript模板引擎原理解析
  6. HTML创建简单动态时钟
  7. python实现车牌识别系统
  8. MSE = Bias² + Variance?什么是“好的”统计估计器
  9. 转发:五个方向告诉你如何运营好一个公众号!
  10. w ndows键是哪一个,Windows键是哪个 电脑上的Win键在哪?【图文】
  11. Dubbo comsumer 远程调用流程分析
  12. 在iPhone上使用3D Touch
  13. mos管的rc吸收电路计算_RC吸收电路的设计经验分享
  14. EasyConnect 安装使用教程 Windows
  15. 数据分析入门——Matplotlib数据可视化
  16. The Necklace(UVA10054)
  17. 2022年首个退役的Apahce大数据项目
  18. c++ windows网络编程底层涉及库
  19. 在Linux上安装TimesTen
  20. 基于javaweb的医院门诊查询系统(前端+后端)

热门文章

  1. python标准库math中用来计算平方根的函数是_2020超星尔雅网课透过性别看世界完整满分见面课答案...
  2. Android 性能优化探究,不愧是Alibaba技术官
  3. 什么是西安80坐标系
  4. 三分钟告诉你软件测试工程师到底是不是程序员?读完你就懂了!
  5. Hadoop .配置SSH无密码登录
  6. Android Studio Flavors详解
  7. 阿里Java代码规范
  8. php中上传图片,原生代码
  9. 【algorithm】算法基础课---排序算法(附笔记 | 建议收藏)
  10. 【2016——-编程语言排行以及优缺点分析】