匈牙利离散(板子向)
原本是打算用GYM-102458A做例子的.但是这个可(gai)爱(si)的题竟然如此难搞.
所以就灰溜溜的用poj-3041做例子了,(尽管这个题并不需要离散)
poj-3041和GYM-102458A一样,都需要把横坐标和纵坐标当成二部图的两边然后跑匈牙利(这就是图论的神奇之处了,风马牛不相及的两个题意,构图方法确实一样的)
这里贴上以前记得二部图的性质吧(免得我这个脑子犯浑,又忘了…)
最小点覆盖=最大匹配
最小路径覆盖=点数-最大匹配
最大独立集=点数-最大匹配
这里GYM-102458A求的是最大匹配
poj-3041求得是最小点覆盖
下面是匈牙利的板子,因为已经很熟悉了,就不多赘述了,有问题再看看以前的笔记就好 (其实是因为我太懒了)
匈牙利板子:
bool dfs(int now)
{for (int i = head[now]; i != -1; i = edge[i].nxt){int v = edge[i].to;if (!vis[v]){vis[v] = 1;if (link[v] == -1 || dfs(link[v])){link[v]=now;return 1;}}}return 0;
}
void getans()
{int ans = 0;for (int i = 1; i <= mx; i++){memset(vis, 0, sizeof(vis));if (dfs(i))ans++;}cout << ans;
}
下面着重总结一下离散的板子,以前总是觉得简单,没放在心上,结果自己一写,总是各种麻烦…终于觉得有必要总结一下,为以后省点事吧…
原文链接
方法1: 包含重复元素,并且相同元素离散化后也要相同
int n;
int s[Max_n],t[Max_n];for(int i=1;i<=n;i++){scanf("%d",&s[i]);t[i]=s[i];
}
sort(t+1,t+n+1);
int m=unique(t+1,t+n+1)-t-1; //m为不重复元素的个数
for(int i=1;i<=n;i++){s[i]=lower_bound(t+1,t+m+1,s[i])-t;
}
方法2: 不管是否含有重复元素,元素离散化后各不相同。
int n;
struct node{int x,id;operator<(const node& no)const{if(x!=no.x)return x<no.x;elsereturn id<no.id;}
}no[Max_n];
int s[Max_n];for(int i=1;i<=n;i++){scanf("%d",&no[i].x);no[i].id=i;
}
sort(no+1,no+n+1);
for(int i=1;i<=n;i++)s[no[i].id]=i;
嘛…原博主码风我挺喜欢的,就借用啦
最后在吐槽一波神(sha)奇(que)的GYM-102458A
匈牙利离散(板子向)相关推荐
- HDU - 1150 Machine Schedule(最小点覆盖-二分图最大匹配)
题目链接:点击查看 题目大意:现在有一个机器A和一个机器B,A机器有n种模式,B机器有m种模式,现在有k次工作需要完成,每次工作的信息为: id x y:编号为id,在A机器要用x模式完成,在B机器要 ...
- POJ - 3041 Asteroids(最小点覆盖-二分图最大匹配)
题目链接:点击查看 题目分析:给出一个n*n的矩阵,其中有m个敌人,每一次操作可以清除某一列或某一行中的所有敌人,问若想清除所有敌人,至少需要多少次操作 题目分析:第一次见这种题,就是最小覆盖是要用最 ...
- 离散信号的希尔伯特变换的计算公式_希尔伯特变换和瞬时频率问题--连载(二)...
写在开始的一段话: PS:OK,上一期关于希尔伯特变换的文章发出后,有知友在评论区说"看到最后--居然这--",哈哈,其实我也挺愧疚大家的,明明一篇知识分享的文章,却写到结尾都没进 ...
- 二分图匹配--匈牙利算法
文章目录 二分图: 匹配 匈牙利算法 代码: 二分图: 二分图是一个无向图,点集分成子集X和Y,图中每一条边都是一边在X一边在Y 当且仅当无向图G的每一个回路次数都是偶数时(包括0),G就是一个二分图 ...
- NOIP2018赛前停课集训记——最后的刷板子计划
前言 再过两天就\(NOIP2018\)了. 于是,我决定不做其他题目,开始一心一意刷板子了. 这篇博客记录的就是我的刷板子计划. [洛谷3383][模板]线性筛素数 这种普及-的题目我还写挂了两次( ...
- 数学建模:整数规划—指派模型与匈牙利算法
目录 标准指派模型 匈牙利算法 基本原理 匈牙利算法步骤 非标准型的指派问题 对于限制全部或部分决策变量取离散非负整数值的线性规划, 称之整数线性规划, 简称整数规划. 整数规划的一种特殊情形是 0− ...
- 原根(知识学习+板子总结+例题+应用)
思路来源 https://baike.baidu.com/item/%E5%8E%9F%E6%A0%B9/8103534?fr=aladdin https://blog.csdn.net/zoro_n ...
- POJ3014(最小覆盖点;匈牙利算法)
匈牙利算法 需要知道的知识点: 最小覆盖点==最大匹配 关于匈牙利算法的详解,可以看我的另外一篇博文. 例题: Asteroids Time Limit: 1000MS Memory Limit: 6 ...
- ACM基本算法板子记录
文章目录 头文件 快读 素数筛法 埃筛 欧筛 快速幂 GCD and LCM DP板子 01 01 01 背包 完全背包 多重背包 朴素 二进制优化 分组背包 背包方案数 并查集 最短路 单源最短路D ...
最新文章
- HDU 5119 Happy Matt Friends ——(背包DP)
- 排查IDEA 全局搜索快捷键Ctrl +Shift+F不起作用的原因和解决方法
- Java工具类--雪花算法生成全局唯一ID
- wxWidgets:窗口样式
- html 手动添加thead,HTML表格 - 我可以在thead之前添加额外的tbody吗?
- 国产毫米波雷达领域的领头羊,木牛科技将在明年量产77GHz汽车雷达
- [Dynamic Language] Python os
- 华为路由器DHCP服务设置(一)
- layui table 渲染动态列及列数据
- 3000元台式电脑组装配置单2022 3000元组装电脑配置推荐2022
- 「镁客早报」OneWeb顺利发射首批6颗互联网卫星;华为西欧负责人称公司将会获得德国5G合同...
- 为什么游戏偏爱D3D
- Apollo自动驾驶50讲笔记
- 关于http请求返回code:415的原因
- ArrayList的remove()方法解读
- 强大易用的网页在线excel转json工具,值得一看
- 搜索 系统通知服务器,博图软件 搜索在线设备 提示“到通讯服务器连接已中止”-工业支持中心-西门子中国...
- 拒绝清一色灰或白主题,教你使用IDEA主题插件Material Theme UI+Atom Material Icons美化你的IDE,颜值瞬间上升一个档次!附详细配置与字体搭配
- python智能家居论文_毕业设计(论文)-基于树莓派的智能家居精选.docx
- 函数的四种特性——1、有界性2、单调性3、奇偶性4、周期性
热门文章
- 毕业生找工作要做好哪些准备
- 【MySQL】MyCAT三大配置文件详解(MySQL专栏启动)
- 台式电脑怎么还原系统
- 楼天城 理想不死:若知为何而生,遂可纳受一切
- cad高程测绘图lisp_已知CAD中的高程测绘图,很多点,如何求出所有高程的平均值呢?难道只能用计算器一个一个的相加来算吗?...
- 六大主流安卓模拟器(腾讯、逍遥、mumu、夜神、雷电、蓝叠)的测评:游戏以外的使用
- 什么才是真正的云主机?辨别真假云主机
- Qt 设置合适的字体大小
- c语言求幸运数字程序,算法题挑选幸运数字,该如何处理
- 广东工业大学acm校赛总结(基础差的人的自我觉悟)