HDU 4160 最小路径覆盖 = 顶点数 - 最大匹配数 二分匹配
来源:互联网 发布:大数据专业相关培训 编辑:程序博客网 时间:2024/05/17 09:24
题意:
n个箱子
下面n行 a b c 表示箱子的长宽高
箱子可以嵌套,里面的箱子三维都要小于外面的箱子
问: 露在外头的箱子有几个
思路:
只要成功匹配一条边,就等价于成功嵌套一个箱子,就是匹配一条边,露在外面的箱子就少一个
结果就是 n - 最大匹配数
注意一个条件: 箱子不可旋转,即 长对应长, 宽对应宽
然后就是一个裸的二分匹配
#include<stdio.h>#include<string.h>#define N 600struct Edge{int to, nex;}edge[N*N];int head[N*2], edgenum;void addedge(int u, int v){Edge E = { v, head[u] };edge[ edgenum ] = E;head[u] = edgenum ++;}struct node{int a,b,c;}p[N];int n;int lef[N*2];bool T[N*2];int match(int x){for(int i = head[x]; i != -1; i = edge[i].nex){int v = edge[i].to;if(T[v])continue;T[v] = true;if(lef[v] == -1 || match( lef[v] ) ){lef[v] = x;return true;}}return false;}int solve(){int ans = 0;memset(lef, -1, sizeof(lef));for(int i = 1; i <= n; i++){memset(T, 0, sizeof(T));ans += match( i );}return ans;}void init(){memset(head, -1, sizeof(head)), edgenum = 0;for(int i = 1; i <= n; i++)scanf("%d %d %d", &p[i].a, &p[i].b, &p[i].c);for(int i = 1; i <= n; i++)for(int j = 1; j <= n; j++){if(p[i].a < p[j].a && p[i].b < p[j].b && p[i].c < p[j].c)addedge(i, j + N);}}int main(){int m, u, v;while(~scanf("%d",&n), n){init();printf("%d\n", n - solve());}return 0;}/*35 4 827 10 10100 32 52331 2 12 1 11 1 241 1 12 3 23 2 24 4 40*/
- HDU 4160 最小路径覆盖 = 顶点数 - 最大匹配数 二分匹配
- POJ 3020 最小路径覆盖 = 顶点数-最大匹配数 二分匹配
- HDU 4160 Dolls (最小路径覆盖=顶点数-最大匹配数)
- HDU-1150(求最小覆盖顶点数=二分最大匹配数)
- HDU 1151 Air Raid(最小路径覆盖 = 顶点数 - 最大匹配数)
- poj3020 匈牙利算法+公式:二分无向图的最小路径覆盖 = 顶点数 - 最大二分匹配数 / 2
- poj3020_最小覆盖路径(顶点个数-二分图最大匹配数)
- HDU 3729 I'm Telling the Truth (最小路径覆盖=顶点数-最大匹配数)
- poj3041-Asteroids , 二分图的最小顶点覆盖数 = 最大匹配数
- poj2594 Treasure Exploration 最小路径覆盖=顶点数-最大匹配数
- poj1422 Air Raid 最小路径覆盖=顶点数-最大匹配数
- poj2060 Taxi Cab Scheme 最小路径覆盖=顶点数-最大匹配数
- CUGB图论专场2:B - Asteroids 二分图:最小顶点覆盖=最大匹配数
- 匈牙利算法 hdu 1151有向图的最小路径覆盖=顶点数-最大匹配数
- HDU-1151(求最小覆盖路径数_二分匹配)
- HDU 1150 Machine Schedule (匈牙利算法 最小顶点覆盖= 最大匹配数)
- 二分图 最小覆盖数 = 最大匹配数、最大独立集 = 总数-最小覆盖集 证明 hdu 1068
- Machine Schedule HDoj (二分图最小顶点覆盖--最大匹配数)
- namenode format做了些什么
- linux 创建连接命令 ln -s 软链接
- C中的位域与大小端问题
- 多文档视图的实现
- Android之PowerManager电源管理
- HDU 4160 最小路径覆盖 = 顶点数 - 最大匹配数 二分匹配
- 什么是重构,什么不是重构
- 国行诺基亚Lumia 1520价格或为4999元
- NSLog输出格式
- 文档视图框架操作总结
- NodeJS Express+ MongoDB 开发详细教程 含安装
- 网络子系统72_IP多播地址与MAC多播地址的映射关系
- 吴卓羲内地频接工作捞金 圆买房买商厦梦想
- js表单验证