2016 Multi-University Training Contest 1 1005 Necklace (hdu5727)【枚举+匹配】
来源:互联网 发布:视频图像分析算法 编辑:程序博客网 时间:2024/06/03 19:21
链接:http://acm.hdu.edu.cn/showproblem.php?pid=5727
题意:有2*n个宝石,n个阴,n个阳,m条关系(a,b),代表a被b影响,a是阳,b是阴。问将这些宝石组成项链,最少的阳被影响的个数。
分析:我们现在枚举阴的排列,因为是环,所以有(n-1)!种,然后对于每个排列,把阳插入到阴的空隙中,如果空隙两边都没有影响则插入,然后跑一边二分匹配,得出的匹配数(num)就是不受影响的最大数,n-num就最小影响的数目。
代码:
#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<string>#include<vector>#include<queue>#include<cmath>#include<stack>#include<set>#include<map>#define INF 0x3f3f3f3f#define Mn 1010#define Mm 2000005#define mod 1000000007#define CLR(a,b) memset((a),(b),sizeof((a)))#define CLRS(a,b,Size) memset((a),(b),sizeof((a[0]))*(Size+1))#define CPY(a,b) memcpy ((a), (b), sizeof((a)))#pragma comment(linker, "/STACK:102400000,102400000")#define ul u<<1#define ur (u<<1)|1using namespace std;typedef long long ll;int p[10];int g[10][10];int mp[10][10];int lk[10];int vis[10];int n;bool find_path(int u) { for(int v=1;v<=n;v++) { if(mp[u][v]&&!vis[v]) { vis[v]=1; if(lk[v]==-1||find_path(lk[v])) { lk[v]=u; return true; } } } return false;}int main() { int m; while(~scanf("%d%d",&n,&m)) { CLR(g,0); for(int i=1;i<=m;i++) { int x,y; scanf("%d%d",&x,&y); g[x][y]=1; } if(n==0) { printf("0\n"); continue; } int ans=INF; for(int i=1;i<=n;i++) p[i]=i; do { CLR(mp,0);CLR(lk,-1); for(int i=1;i<=n;i++) { int x=p[i],y=p[i%n+1]; for(int j=1;j<=n;j++) { if(!g[j][x]&&!g[j][y]) { mp[i][j]=1; } } } int num=0; for(int i=1;i<=n;i++) { CLR(vis,0); num+=find_path(i); } ans=min(ans,n-num); } while(next_permutation(p+2,p+n+1)); printf("%d\n",ans); } return 0;}
0 0
- 2016 Multi-University Training Contest 1 1005 Necklace (hdu5727)【枚举+匹配】
- 2016 Multi-University Training Contest 1-1005---HDU 5727 Necklace(枚举+二分图匹配)
- [HDU5727] Necklace [2016 Multi-University Training Contest 1(2016多校联合训练1) E]
- 2016 Multi-University Training Contest 1 1005 Necklace
- 【HDU5727 2016 Multi-University Training Contest 1E】【状压DP做法 匈牙利匹配做法】Necklace n阳n阴排成环 特定相邻会抑郁 问最少抑郁阳球数
- (HDU 5727)2016 Multi-University Training Contest 1 Necklace(搜索、图论)
- hdu 5730 2016 Multi-University Training Contest 1 Shell Necklace 解题报告
- 2016 Multi-University Training Contest 1
- 2016 Multi-University Training Contest 1
- 2016 Multi-University Training Contest 1
- 2016 Multi-University Training Contest 1
- 2016 Multi-University Training Contest 2-1005(hdu5738) Eureka
- 2016 Multi-University Training Contest 1 题解(慢慢补)
- 2016 Multi-University Training Contest 2-1005---HDU 5738 Eureka
- 2016 Multi-University Training Contest 2 1005 Eureka
- 2016 Multi-University Training Contest 4 1005Lucky7
- 2017 Multi-University Training Contest 3 1005
- 2016 Multi-University Training Contest 1Abandoned country
- Rx学习笔记和总结
- CODEFORCES 197D Infinite Maze
- VS2010 MPI并行环境设置
- [树形dp] poj 2486 Apple Tree
- mysql修改root密码
- 2016 Multi-University Training Contest 1 1005 Necklace (hdu5727)【枚举+匹配】
- C - C
- Codeforces Round #364 (Div. 2) C. They Are Everywhere (尺取法)
- oracle expdp impdp总结
- Eclipse中实现Tomcat热部署
- 多线程题目
- 持续化
- android系统各种音量的获取与设置
- <设计模式2>抽象工厂模式