hdu 3335(最小路径覆盖)
来源:互联网 发布:基本款斜挎包 知乎 编辑:程序博客网 时间:2024/05/18 21:47
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3335
思路:有矛盾的条件一般都应该往匹配这方面想:
能够整除的连边,于是答案(最小路径)==|顶点个数|-最大匹配。这儿要注意的地方就是要去掉相同的数(排序一下即可),然后就是hungry算法搞定就可以了。
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 #include<vector> 6 using namespace std; 7 #define MAXN 1111 8 typedef long long ll; 9 int n,m;10 ll num[MAXN];11 int lx[MAXN],ly[MAXN];12 bool mark[MAXN];13 vector<int>map[MAXN];14 15 int dfs(int u) {16 for(int i=0; i<map[u].size(); i++) {17 int v=map[u][i];18 if(!mark[v]) {19 mark[v]=true;20 if(ly[v]==-1||dfs(ly[v])) {21 ly[v]=u;22 lx[u]=v;23 return 1;24 }25 }26 }27 return 0;28 }29 30 int MaxMatch() {31 int res=0;32 memset(lx,-1,sizeof(lx));33 memset(ly,-1,sizeof(ly));34 for(int i=1; i<=m; i++) {35 memset(mark,false,sizeof(mark));36 if(lx[i]==-1)res+=dfs(i);37 }38 return res;39 }40 41 int main() {42 int _case;43 scanf("%d",&_case);44 while(_case--) {45 scanf("%d",&n);46 m=1;47 for(int i=1; i<=n; i++)map[i].clear();48 for(int i=1; i<=n; i++)scanf("%I64d",&num[i]);49 sort(num+1,num+1+n);50 for(int i=2; i<=n; i++)if(num[i]!=num[i-1])num[++m]=num[i];51 for(int i=2; i<=m; i++) {52 for(int j=1; j<i; j++) {53 if(num[i]%num[j]==0)54 map[i].push_back(j);55 }56 }57 int ans=MaxMatch();58 printf("%d\n",m-ans);59 }60 return 0;61 }
0 0
- hdu 3335 (最小路径覆盖)
- hdu 3335(最小路径覆盖)
- 最小路径覆盖 hdu 1151 hdu 3335
- HDU 3335 Divisibility(Dilworth定理+最小路径覆盖)
- hdu 3335 Divisibility (最小路径覆盖)
- HDU 1350(最小路径覆盖)
- hdu 3991(最小路径覆盖)
- hdu 4160(最小路径覆盖)
- 【最小路径覆盖】HDU 4160
- hdu 1151 最小路径覆盖
- hdu 1151 最小路径覆盖
- HDU - 4160 最小路径覆盖
- hdu 1350+hdu 1960(最小路径覆盖)
- HDU 1151 Air Raid(最小路径覆盖)
- hdu Matrix(二分图的最小路径覆盖)
- hdu 1151 Air Raid(最小路径覆盖)
- hdu 4606(线段相交 + 最短路 + 最小路径覆盖)
- hdu 3861(缩点+最小路径覆盖)
- hdu 2988(kruskal求最小生成树)
- bnu 4359(数位dp)
- hdu 2236(最大匹配+枚举上下界)
- hdu 3861(缩点+最小路径覆盖)
- 关于tomcat服务器新学到的一些东西
- hdu 3335(最小路径覆盖)
- hdu 4313(类似于kruskal)
- hdu 4296(贪心)
- hdu 4311(枚举)
- hdu 2831(贪心)
- hdu 2819(二分匹配)
- hdu 2354(bfs求最短路)
- hdu 4324(dfs)
- hdu 2376(求树上任意两点之间距离之和的平均值)