HDU - 4160 最小路径覆盖
来源:互联网 发布:淘宝卖家店铺已过期 编辑:程序博客网 时间:2024/05/16 15:19
题意:
给n个玩具娃娃,分别给出每一个玩具娃娃的长宽高。如果满足一个娃娃的长宽高都大于另一个娃娃,那么大娃娃可以套在小娃娃的外面。问层层嵌套之后,最终最少还能剩下几个娃娃。
思路:
最小路径覆盖的模板题,如果左边放n个娃娃,右边放n个娃娃,满足嵌套关系的娃娃之间连边,那么显然这个图是二分图,顶点数 - 最大匹配 = 最小路径覆盖。
代码:
#include <bits/stdc++.h>using namespace std;const int MAXN = 505;const int MAXM = 505;struct node { int x, y, z; bool operator < (const node &b) const { if (x == b.x) { if (y == b.y) return z < b.z; return y < b.y; } return x < b.x; }}a[MAXN];struct BgMaxMatch { int nl, nr; int l[MAXN], r[MAXM]; bool vis[MAXN]; vector <int> G[MAXN]; //这里注意要看是按左右哪边建图,也有可能是MAXM void init(int nl, int nr) { this -> nl = nl; this -> nr = nr; for (int i = 1; i <= nl; i++) G[i].clear(); memset(vis, false, sizeof(vis)); } void AddEdge(int u, int v) { G[u].push_back(v); } bool dfs(int u){ int cnt = G[u].size(); for (int i = 0; i < cnt; i++) { int v = G[u][i]; if (!vis[v]) { vis[v] = true; if(l[v] == -1 || dfs(l[v])){ l[v] = u; r[u] = i; return true; } } } return false; } int MaxMatch() { memset(l, -1, sizeof(l)); memset(r, -1, sizeof(r)); int ans = 0; for (int i = nl; i >= 1; i--) { memset(vis, false, sizeof(vis)); ans += dfs(i); } return ans; }} solver;int main() { int n; while (scanf("%d", &n), n) { for (int i = 1; i <= n; i++) scanf("%d%d%d", &a[i].x, &a[i].y, &a[i].z); sort (a + 1, a + 1 + n); solver.init(n, n); for (int i = 1; i <= n; i++) { for (int j = i + 1; j <= n; j++) { if (a[i].x < a[j].x && a[i].y < a[j].y && a[i].z < a[j].z) solver.AddEdge(i, j); } } printf("%d\n", n - solver.MaxMatch()); } return 0;}
0 0
- 【最小路径覆盖】HDU 4160
- HDU - 4160 最小路径覆盖
- hdu 4160 二分图最小路径覆盖
- hdu 4160 Dolls (最小路径覆盖)
- HDU-4160 Doll 最小路径覆盖
- [hdu 4160] Dolls(最小路径覆盖)
- hdu 4160(最小路径覆盖)
- 【HDU】4160 Dolls 最小路径覆盖
- HDU 4160 Dolls(DAG最小路径覆盖)
- HDU 4160 Dolls 最小路径覆盖
- HDU 4160 — Dolls 最小路径覆盖
- HDU 4160 Dolls(DAG最小路径覆盖)
- HDU 4160 Dolls(DAG最小路径覆盖)
- hdu 1151 最小路径覆盖
- hdu 1151 最小路径覆盖
- 最小路径覆盖 hdu 1151 hdu 3335
- hdu 4160 Dolls 二分图最小路径覆盖
- hdu 4160 Dolls【最小路径覆盖----二分匹配】
- TabLayout 标题不显示 原因:
- thinkphp入门
- 8小时浓度均值即连续8个小时浓度的平均值
- java执行bat文件--jsp中实现
- vue 概述
- HDU - 4160 最小路径覆盖
- Jenkins+Gitlab+Sonar代码检查平台搭建-Pom.xml
- slk文件(QQ or 微信) 转为 mp3
- 【Listener机制】ServletContextListener
- Android Studio配置SVN详解
- Miracast/音视频处理
- 剑指offer-面试题40-数组中只出现一次的数字
- STM32F10x_硬件I2C读写EEPROM(标准外设库版本)
- CSS盒模型