uva 11159 Factors and Multiples
来源:互联网 发布:江阴广电网络 编辑:程序博客网 时间:2024/06/08 10:44
F
Next Generation Contest 3
Time Limit: 2 seconds
Factors and Multiples
You will be given two sets of integers. Let�s call them set A and set B. Set A contains n elements and set B contains m elements. You have to remove k1 elements from set A and k2 elements from set B so that of the remaining values no integer in set B is a multiple of any integer in setA. k1 should be in the range [0,n] and k2 in the range [0,m].
You have to find the value of (k1+k2) such that (k1+k2) is as low as possible.
P is a multiple of Q if there is some integer K such that P = K * Q.
Suppose set A is {2,3,4,5} and set B is {6,7,8,9}. By removing 2 and 3 from A and 8 from B, we get the sets {4,5} and{6,7,9}. Here none of the integers 6, 7 or 9 is a multiple of 4 or 5.
So for this case the answer is 3 (2 from set A and 1 from set B).
Input
The first line of input is an integer T(T<50) that determine the number of test cases. Each case consists of two lines. The first line starts with nfollowed by n integers. The second line starts with m followed by m integers. Both n and m will be in the range [1,100]. All the elements of the two sets will fit in 32 bit signed integer.
Output
For each case, output the case number followed by the answer.
Sample Input
Output for Sample Input
2
4 2 3 4 5
4 6 7 8 9
3 100 200 300
1 150
Case 1: 3
Case 2: 0
Problem Setter: Sohel Hafiz
Special Thanks: Jane Alam Jan
题目大意:
A 和 B 两个集合,从A里面删除一些数 K1 个,从 B里面删除一些数 K2 个,使得 B 中的任何一个元素 都不是 A中 的任意一个数的倍数。
解题思路:
二部图最大匹配,只要将最大匹配中的全部左边或右边点删掉即可。
解题代码:
#include <iostream>#include <cstring>#include <cstdio>#include <cmath>#include <set>#include <algorithm>using namespace std;const int maxn=110;int path[maxn][maxn],visited[maxn],link[maxn];int n,m,a[maxn],b[maxn];int can(int x){ for(int i=0;i<m;i++){ if(visited[i]==-1 && path[x][i]>0){ visited[i]=1; if( link[i]==-1 || can(link[i]) ){ link[i]=x; return 1; } } } return 0;}void solve(int casen){ int ans=0; for(int i=0;i<n;i++) for(int j=0;j<m;j++){ if(a[i]==0){ if(b[j]!=0) continue; else path[i][j]=1; } else if(b[j]%a[i]==0){ path[i][j]=1; } } for(int i=0;i<n;i++){ memset(visited,-1,sizeof(visited)); if(can(i)) ans++; } printf("Case %d: %d\n",casen,ans);}int main(){ //freopen("in.txt","r",stdin); int t; scanf("%d",&t); for(int k=1;k<=t;k++){ memset(path,0,sizeof(path)); memset(link,-1,sizeof(link)); scanf("%d",&n); for(int i=0;i<n;i++) scanf("%d",&a[i]); scanf("%d",&m); for(int i=0;i<m;i++) scanf("%d",&b[i]); solve(k); } return 0;}
- uva 11159 Factors and Multiples
- uva 11159 Factors and Multiples
- UVA 11159Factors and Multiples (最大独立集)
- UVa11159 - Factors and Multiples(二分匹配)
- LightOJ 1149 - Factors and Multiples【二分图最大匹配】
- LightOJ - 1149 Factors and Multiples(二分图匹配)
- UVa11159 - Factors and Multiples(二分匹配匈牙利算法)
- lightoj1149 - Factors and Multiples【二分图最大匹配】
- LightOJ--1149--Factors and Multiples(二分图好题)
- Light oj 1149 - Factors and Multiples【最大匹配】
- LightOJ 1149 Factors and Multiples 最大匹配--匈牙利算法
- light oj 1149 - Factors and Multiples (二分匹配)
- Factors and Multiples(二分图匹配)LightOJ
- UVa 160 - Factors and Factorials
- UVa 160-Factors and Factorials
- UVa 160 Factors and Factorials
- Light oj 1149 - Factors and Multiples 【二分图最大匹配】【好题】
- Light oj 1149--Factors and Multiples【二分匹配 && 经典建图】
- python--进阶(一)
- cURL如何只获取http请求的code信息
- 迷宫 做的第一个搜索题
- python--进阶二--图形界面
- 如何使用遨游浏览器查看记住的网站密码
- uva 11159 Factors and Multiples
- python--进阶三--SQLite
- Java设计模式——单例模式
- 设计模式之工厂方法
- python--进阶四--多线程
- 进制的总结
- cmd下运行Java程序遇到java.lang.NoClassDefFoundError
- STM32F系列单片机内部FLASH编程
- ASP.NET 同时删除多条记录