hdu335(最小覆盖)
来源:互联网 发布:mes 生产优化调度算法 编辑:程序博客网 时间:2024/06/05 03:32
点击打开链接
给你n个数,求,最少留下几个数,可以使,两两不能被整除。。。
求出两两被整除的最大匹配,然后n减。
注意可能出现相同的数字。。
#include"stdio.h"#include"string.h"#include"algorithm"using namespace std;#define N 1005typedef __int64 LL;int n;LL A[N];int set[N];int map[N][N];int mark[N];int bfs(int x){int i;for(i=0;i<n;i++){if(!mark[i]){if(map[x][i]){mark[i]=1;if(set[i]==-1||bfs(set[i])){set[i]=x;return 1;}}}}return 0;}int main(){int T;int i,j;scanf("%d",&T);while(T--){scanf("%d",&n);for(i=0;i<n;i++)scanf("%I64d",&A[i]);sort(A,A+n);int m=1;for(i=1;i<n;i++){if(A[i]!=A[i-1])A[m++]=A[i];}n=m;memset(map,0,sizeof(map));for(i=0;i<n;i++){for(j=i+1;j<n;j++)if(A[j]%A[i]==0)map[j][i]=1;}memset(set,-1,sizeof(set));int ans=0;for(i=0;i<n;i++){memset(mark,0,sizeof(mark));if(bfs(i))ans++;}printf("%d\n",n-ans);}return 0;}
求出两两被整除的最大匹配,然后n减。
求出两两被整除的最大匹配,然后n减。
- hdu335(最小覆盖)
- Asteroids (最小覆盖)
- 最小路径覆盖问题(最小路径覆盖)
- 最小路径覆盖(转载)
- 最小覆盖圆(非)
- 最小路径覆盖(转)
- hdu 3360(最小覆盖)
- hdoj4160_Dolls(最小路径覆盖)
- poj1548(最小路径覆盖)
- Machine Schedule(最小覆盖)
- hdoj1150(最小点覆盖)
- hdu1151(最小路径覆盖)
- ural1109Conference(最小边覆盖)
- 最小路径覆盖(最小边覆盖&&最小点覆盖)hdu1150
- 二分图相关定理及其证明(最小点覆盖+最小路径覆盖+最大独立集+最小覆盖集)
- ZOJ 1525(最小路径覆盖)
- HDU 1350(最小路径覆盖)
- PKU 3216(最小路径覆盖 + floyd)
- Blue Jeans
- fork()后父子进程间的变量共享情况
- android混淆, 忽略第三方jar包
- Sparsity稀疏编码(三) (值得阅读)
- 将String类型转换成int类型
- hdu335(最小覆盖)
- windows查看端口使用情况,以及结束任务释放端口
- linux消息队列函数
- UVA 10670 Work Reduction (贪心 + 被题意坑了- -)
- 【解题报告】HDU 4631 Sad Love Story 最短点距(动态)
- CMiniDump类 程序崩溃时自动保存Dump文件
- 只会编程的程序员没有前途
- Pl/sql 存储过程
- 第四章(01)类和对象