Hdu 5090 Game with Pearls(二分匹配)
来源:互联网 发布:阿里云注销备案 编辑:程序博客网 时间:2024/06/08 07:01
点击打开链接
Game with Pearls
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 70 Accepted Submission(s): 51
Problem Description
Tom and Jerry are playing a game with tubes and pearls. The rule of the game is:
1) Tom and Jerry come up together with a number K.
2) Tom provides N tubes. Within each tube, there are several pearls. The number of pearls in each tube is at least 1 and at most N.
3) Jerry puts some more pearls into each tube. The number of pearls put into each tube has to be either 0 or a positive multiple of K. After that Jerry organizes these tubes in the order that the first tube has exact one pearl, the 2nd tube has exact 2 pearls, …, the Nth tube has exact N pearls.
4) If Jerry succeeds, he wins the game, otherwise Tom wins.
Write a program to determine who wins the game according to a given N, K and initial number of pearls in each tube. If Tom wins the game, output “Tom”, otherwise, output “Jerry”.
1) Tom and Jerry come up together with a number K.
2) Tom provides N tubes. Within each tube, there are several pearls. The number of pearls in each tube is at least 1 and at most N.
3) Jerry puts some more pearls into each tube. The number of pearls put into each tube has to be either 0 or a positive multiple of K. After that Jerry organizes these tubes in the order that the first tube has exact one pearl, the 2nd tube has exact 2 pearls, …, the Nth tube has exact N pearls.
4) If Jerry succeeds, he wins the game, otherwise Tom wins.
Write a program to determine who wins the game according to a given N, K and initial number of pearls in each tube. If Tom wins the game, output “Tom”, otherwise, output “Jerry”.
Input
The first line contains an integer M (M<=500), then M games follow. For each game, the first line contains 2 integers, N and K (1 <= N <= 100, 1 <= K <= N), and the second line contains N integers presenting the number of pearls in each tube.
Output
For each game, output a line containing either “Tom” or “Jerry”.
Sample Input
2 5 1 1 2 3 4 5 6 2 1 2 3 4 5 5
Sample Output
Jerry Tom
题意:n个数,现在可以分别将每个数,加上k的整数倍或0。问最后是否能将n个数,改变成1到n的排列。
题解:如果一个数x能加上k的整数倍或0变成y,则在x和y之间建一条边。建完图跑最大匹配,如果最大匹配为n则有解。
代码如下:
#include<stdio.h>#include<iostream>#include<algorithm>#include<stack>#include<vector>#include<queue>#include<string.h>#define inff 0x3fffffff#define nn 110using namespace std;int n,k;int a[nn];struct node{ int st,en,next;}E[nn*nn];int p[nn],num;void init(){ memset(p,-1,sizeof(p)); num=0;}void add(int st,int en){ E[num].en=en; E[num].next=p[st]; p[st]=num++;}int pre[nn];bool vis[nn];bool dfs(int id){ int i,w; for(i=p[id];i+1;i=E[i].next) { w=E[i].en; if(!vis[w]) { vis[w]=true; if(pre[w]==-1||dfs(pre[w])) { pre[w]=id; return true; } } } return false;}void solve(){ int i; int re=0; memset(pre,-1,sizeof(pre)); for(i=1;i<=n;i++) { memset(vis,false,sizeof(vis)); if(dfs(i)) re++; } if(re==n) puts("Jerry"); else puts("Tom");}int main(){ int t,i,j; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&k); for(i=1;i<=n;i++) scanf("%d",&a[i]); init(); for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { if((j-a[i])>=0&&(j-a[i])%k==0) { add(i,j); } } } solve(); } return 0;}
0 0
- 【二分匹配】 HDU 5090 Game with Pearls
- hdu 5090 Game with Pearls (二分匹配)
- Hdu 5090 Game with Pearls(二分匹配)
- HDU 5090 Game with Pearls(二分匹配)
- HDU 5090 Game with Pearls(二分匹配)
- HDU 5090--Game with Pearls【二分图最大匹配】
- HDU 5090 Game with Pearls【贪心||模拟||二分匹配】
- hdu 5090 Game with Pearls(最大匹配)
- hdu 5090 Game with Pearls(最大匹配)
- HDU ACM 5090 Game with Pearls->二分图最大匹配或?
- HDOJ 5090 Game with Pearls 二分图匹配
- hdoj 5090 Game with Pearls 【二分图最大匹配】
- HDU 5090 Game with Pearls(贪心)
- hdu 5090 Game with Pearls
- hdu 5090 Game with Pearls
- HDU 5090 Game with Pearls
- HDU 5090 Game with Pearls
- HDU 5090 - Game with Pearls
- hdu5095 模拟
- QMainWindow与QWidget和QDialog设置布局的不同之处
- hdu 4059 The Boss on Mars(容斥)
- 分享一个链接
- 产品黑魔法:腾讯搞流量的重要一课
- Hdu 5090 Game with Pearls(二分匹配)
- @Response
- LeetCode[Linked List]: Copy List with Random Pointer
- 高仿新闻教程-开源框架的简单实现——网易新闻的标题栏(一)
- 一个可以解析复杂JSON字符串里面值的算法
- hdu 5087 Revenge of LIS II | dp 次长上升子序列
- android中viewpager的学习
- 淘宝爆款女性减肥瘦身产品大集成大排行
- Shell编程学习笔记