原本是打算用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

匈牙利离散(板子向)相关推荐

  1. HDU - 1150 Machine Schedule(最小点覆盖-二分图最大匹配)

    题目链接:点击查看 题目大意:现在有一个机器A和一个机器B,A机器有n种模式,B机器有m种模式,现在有k次工作需要完成,每次工作的信息为: id x y:编号为id,在A机器要用x模式完成,在B机器要 ...

  2. POJ - 3041 Asteroids(最小点覆盖-二分图最大匹配)

    题目链接:点击查看 题目分析:给出一个n*n的矩阵,其中有m个敌人,每一次操作可以清除某一列或某一行中的所有敌人,问若想清除所有敌人,至少需要多少次操作 题目分析:第一次见这种题,就是最小覆盖是要用最 ...

  3. 离散信号的希尔伯特变换的计算公式_希尔伯特变换和瞬时频率问题--连载(二)...

    写在开始的一段话: PS:OK,上一期关于希尔伯特变换的文章发出后,有知友在评论区说"看到最后--居然这--",哈哈,其实我也挺愧疚大家的,明明一篇知识分享的文章,却写到结尾都没进 ...

  4. 二分图匹配--匈牙利算法

    文章目录 二分图: 匹配 匈牙利算法 代码: 二分图: 二分图是一个无向图,点集分成子集X和Y,图中每一条边都是一边在X一边在Y 当且仅当无向图G的每一个回路次数都是偶数时(包括0),G就是一个二分图 ...

  5. NOIP2018赛前停课集训记——最后的刷板子计划

    前言 再过两天就\(NOIP2018\)了. 于是,我决定不做其他题目,开始一心一意刷板子了. 这篇博客记录的就是我的刷板子计划. [洛谷3383][模板]线性筛素数 这种普及-的题目我还写挂了两次( ...

  6. 数学建模:整数规划—指派模型与匈牙利算法

    目录 标准指派模型 匈牙利算法 基本原理 匈牙利算法步骤 非标准型的指派问题 对于限制全部或部分决策变量取离散非负整数值的线性规划, 称之整数线性规划, 简称整数规划. 整数规划的一种特殊情形是 0− ...

  7. 原根(知识学习+板子总结+例题+应用)

    思路来源 https://baike.baidu.com/item/%E5%8E%9F%E6%A0%B9/8103534?fr=aladdin https://blog.csdn.net/zoro_n ...

  8. POJ3014(最小覆盖点;匈牙利算法)

    匈牙利算法 需要知道的知识点: 最小覆盖点==最大匹配 关于匈牙利算法的详解,可以看我的另外一篇博文. 例题: Asteroids Time Limit: 1000MS Memory Limit: 6 ...

  9. ACM基本算法板子记录

    文章目录 头文件 快读 素数筛法 埃筛 欧筛 快速幂 GCD and LCM DP板子 01 01 01 背包 完全背包 多重背包 朴素 二进制优化 分组背包 背包方案数 并查集 最短路 单源最短路D ...

最新文章

  1. HDU 5119 Happy Matt Friends ——(背包DP)
  2. 排查IDEA 全局搜索快捷键Ctrl +Shift+F不起作用的原因和解决方法
  3. Java工具类--雪花算法生成全局唯一ID
  4. wxWidgets:窗口样式
  5. html 手动添加thead,HTML表格 - 我可以在thead之前添加额外的tbody吗?
  6. 国产毫米波雷达领域的领头羊,木牛科技将在明年量产77GHz汽车雷达
  7. [Dynamic Language] Python os
  8. 华为路由器DHCP服务设置(一)
  9. layui table 渲染动态列及列数据
  10. 3000元台式电脑组装配置单2022 3000元组装电脑配置推荐2022
  11. 「镁客早报」OneWeb顺利发射首批6颗互联网卫星;华为西欧负责人称公司将会获得德国5G合同...
  12. 为什么游戏偏爱D3D
  13. Apollo自动驾驶50讲笔记
  14. 关于http请求返回code:415的原因
  15. ArrayList的remove()方法解读
  16. 强大易用的网页在线excel转json工具,值得一看
  17. 搜索 系统通知服务器,博图软件 搜索在线设备 提示“到通讯服务器连接已中止”-工业支持中心-西门子中国...
  18. 拒绝清一色灰或白主题,教你使用IDEA主题插件Material Theme UI+Atom Material Icons美化你的IDE,颜值瞬间上升一个档次!附详细配置与字体搭配
  19. python智能家居论文_毕业设计(论文)-基于树莓派的智能家居精选.docx
  20. 函数的四种特性——1、有界性2、单调性3、奇偶性4、周期性

热门文章

  1. 毕业生找工作要做好哪些准备
  2. 【MySQL】MyCAT三大配置文件详解(MySQL专栏启动)
  3. 台式电脑怎么还原系统
  4. 楼天城 理想不死:若知为何而生,遂可纳受一切
  5. cad高程测绘图lisp_已知CAD中的高程测绘图,很多点,如何求出所有高程的平均值呢?难道只能用计算器一个一个的相加来算吗?...
  6. 六大主流安卓模拟器(腾讯、逍遥、mumu、夜神、雷电、蓝叠)的测评:游戏以外的使用
  7. 什么才是真正的云主机?辨别真假云主机
  8. Qt 设置合适的字体大小
  9. c语言求幸运数字程序,算法题挑选幸运数字,该如何处理
  10. 广东工业大学acm校赛总结(基础差的人的自我觉悟)