Dolls---hdu4160(最大匹配)
2015-08-14 19:29
183 查看
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4160
有n个长方体形的娃娃;当长宽高都小于另一个的时候可以放进去,每一个里面最多放一个,问最优的套法下,最后可以剩下多少个娃娃;
用n-最大匹配就行了;
View Code
有n个长方体形的娃娃;当长宽高都小于另一个的时候可以放进去,每一个里面最多放一个,问最优的套法下,最后可以剩下多少个娃娃;
用n-最大匹配就行了;
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; #define N 550 int n, vis , used , maps ; struct node { int x, y, z, dp; }a ; int cmp(node p, node q) { if(p.x!=q.x) return p.x < q.x; else if(p.y!=q.y) return p.y < q.y; return p.z < q.z; } bool Find(int u) { for(int i=1; i<=n; i++) { if(!vis[i] && maps[u][i]) { vis[i]=1; if(!used[i] || Find(used[i])) { used[i] = u; return true; } } } return false; } int main() { while(scanf("%d", &n),n) { memset(a, 0, sizeof(a)); memset(used, 0, sizeof(used)); memset(maps, 0, sizeof(maps)); for(int i=1; i<=n; i++) { scanf("%d%d%d", &a[i].x, &a[i].y, &a[i].z); } sort(a+1, a+n+1, cmp); for(int i=1; i<=n; i++) { for(int j=1; j<i; j++) { if(a[j].x<a[i].x && a[j].y<a[i].y&&a[j].z<a[i].z) { maps[j][i] = 1; } } } int ans=0; for(int i=1; i<=n; i++) { memset(vis, 0, sizeof(vis)); if(Find(i)) ans++; } printf("%d\n", n-ans); } return 0; }
View Code
相关文章推荐
- vs2010常见的错误
- php最简单的注入与最简单的避免方式
- 算法题:A除以B
- Derivation of User Browsing Model
- JS的覆盖特性来解决文件冲突问题,css的加载问题
- swift--闭包
- win共享文件给xp系统
- C# DataGridView显示行号方法。
- hdu 4585 Shaolin(STL map)
- Codeforces 432C Prime Swaps
- hdu 1087 Super Jumping! Jumping! Jumping! 最长上升子序列的变形
- poj 2229 完全背包变形(求解整数拆分问题)
- 常用的dos命名
- poj 2135 Farm Tour【 最小费用最大流 】
- 【OpenCV】高斯混合背景建模
- html 动态显示元素文本
- Android 自己的自动化测试(5)<robotium>
- 小白书之栈的调用过程
- 安卓百度地图附近poi搜索以及到指定poi的换乘方案
- 28335硬件教程-中断系统