hdu149850 years, 50 colors (多个最小顶点覆盖)
50 years, 50 colors
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1516 Accepted Submission(s): 818
color balloons".
There will be a n*n matrix board on the ground, and each grid will have a color balloon in it.And the color of the ballon will be in the range of [1, 50].After the referee shouts "go!",you can begin to crash the balloons.Every time you can only choose one kind
of balloon to crash, we define that the two balloons with the same color belong to the same kind.What's more, each time you can only choose a single row or column of balloon, and crash the balloons that with the color you had chosen. Of course, a lot of students
are waiting to play this game, so we just give every student k times to crash the balloons.
Here comes the problem: which kind of balloon is impossible to be all crashed by a student in k times.

n*n, where Aij denote the color of the ballon in the i row, j column.Input ends with n = k = 0.
1 1
1
2 1
1 1
1 2
2 1
1 2
2 2
5 4
1 2 3 4 5
2 3 4 5 1
3 4 5 1 2
4 5 1 2 3
5 1 2 3 4
3 3
50 50 50
50 50 50
50 50 50
0 0
-1
1
2
1 2 3 4 5
-1
题意:在校庆活动其中,有n*n个格子,里面放有不同颜色的汽球,让学生去拍汽球,但一次仅仅能拍一行或一列的同样颜色的汽球。而且一个学生最多仅仅能拍k次,问那些颜色的汽球不能在4k次中拍完则输出汽球的颜色,按升序排列,假设没有则输出-1.
解题:看起来无从下手,但是依据题意可知,我们能够把不同颜色的汽球分开来,对每种汽球各求一次。这样就是一个最小顶覆盖问题了。
#include<stdio.h>
#include<string.h>
int map[55][105][105],vist[105],match[105],n;
int find(int i,int c)
{
for(int j=1;j<=n;j++)
if(!vist[j]&&map[c][i][j])
{
vist[j]=1;
if(match[j]==0||find(match[j],c))
{
match[j]=i; return 1;
}
}
return 0;
}
int main()
{
int m,c,cc[55];
while(scanf("%d%d",&n,&m)>0&&n+m!=0)
{
memset(map,0,sizeof(map));
memset(cc,0,sizeof(cc));
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
scanf("%d",&c); map[c][i][j]=1; cc[c]=1;
}
int flag=0,ans;
for(int c=1;c<=50;c++)
if(cc[c])
{
ans=0; memset(match,0,sizeof(match));
for(int i=1;i<=n;i++)
{
memset(vist,0,sizeof(vist));
ans+=find(i,c);
}
if(ans>m)
{
if(flag)printf(" "); printf("%d",c); flag=1;
}
}
if(flag==0)printf("-1");
printf("\n");
}
}
版权声明:本文博客原创文章。博客,未经同意,不得转载。
hdu149850 years, 50 colors (多个最小顶点覆盖)的更多相关文章
- HDU 1498 50 years, 50 colors (行列匹配+最小顶点覆盖)
题目:点击打开链接 题意:每个格子有不同颜色的气球用不同数字表示,每次可选某一行 或某一列来戳气球.每个人有K次机会.求最后哪些气球不能在 k次机会内 ...
- hdu----149850 years, 50 colors(最小覆盖点)
50 years, 50 colors Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...
- HDU 1498 50 years, 50 colors(最小点覆盖,坑称号)
50 years, 50 colors Problem Description On Octorber 21st, HDU 50-year-celebration, 50-color balloons ...
- hdu 1498 50 years, 50 colors 最小点覆盖
50 years, 50 colors Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...
- POJ2226(最小顶点覆盖)
Muddy Fields Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 10044 Accepted: 3743 Des ...
- POJ2226 Muddy Fields 二分匹配 最小顶点覆盖 好题
在一个n*m的草地上,.代表草地,*代表水,现在要用宽度为1,长度不限的木板盖住水, 木板可以重叠,但是所有的草地都不能被木板覆盖. 问至少需要的木板数. 这类题的建图方法: 把矩阵作为一个二分图,以 ...
- BZOJ 3140 消毒(最小顶点覆盖)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=3140 题意:最近在生物实验室工作的小T遇到了大麻烦. 由于实验室最近升级的缘故,他的分格 ...
- poj 3041 Asteroids (最大匹配最小顶点覆盖——匈牙利模板题)
http://poj.org/problem?id=3041 Asteroids Time Limit: 1000MS Memory Limit: 65536K Total Submissions ...
- hdoj 1150 Machine Schedule【匈牙利算法+最小顶点覆盖】
Machine Schedule Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
随机推荐
- PowerMockito使用详解(转)
一.为什么要使用Mock工具 在做单元测试的时候,我们会发现我们要测试的方法会引用很多外部依赖的对象,比如:(发送邮件,网络通讯,远程服务, 文件系统等等). 而我们没法控制这些外部依赖的对象,为了解 ...
- 【转】Android内存机制分析1——了解Android堆和栈
昨天用Gallery做了一个图片浏览选择开机画面的功能,当我加载的图片多了就出现OOM问题.以前也出现过这个问题,那时候并没有深究.这次打算好好分析一下Android的内存机制. 因为我以前是做VC+ ...
- 【转】Android HTTP协议
前言 说到HTTP协议,那必须要说说WWW了,WWW是环球信息网(World Wide Web )的缩写,也可以简称为Web,中文名字为“万维网”.简单来说,WWW是以Internet作为传输媒介的一 ...
- Matlab Newton‘s method
定义函数 function y=f(x) y=f(x).%函数f(x)的表达式 end function z=h(x) z=h(x).%函数h(x)的表达式 end 主程序 x=X;%迭代初值 i=0 ...
- MPC8313ERDB不新鲜pkg包裹,把文件放进Ramdisk
MPC8313ERDB不新鲜pkg包裹,把文件放进Ramdisk 经ltib编译器生成rootfs.ext2.gz.uboot它可以直接uboot采用.假设我们编写了相应的外部文件把Ramdisk往里 ...
- XCL-Charts画一个图(CurveChart)
情节线图与往常不同的是,它是一个比较特殊线位置计算.所以我得到一个单独的类.相同.只需要输入数据源的基类, 加,控制要添加的.你可以画出你自己主动设置按照预期的效果. 代码: //图基类 chart ...
- HDU 3788 和九度OJ 1006测试数据是不一样的
ZOJ问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...
- java 它 引用(基本类型的包装,构造函数和析构函数c++不同)
一个:java 和c++参考控制 他提到引用,我们会想到java它不喜欢c++里面的指针.当然java内引用和c++里面的引用是不同的. 比如: 比方C++中,我对某一个函数的声明.int a(i ...
- 【安德鲁斯】于java代码集drawableLeft给予适当的大小如何,当?
textView.setCompoundDrawables(drawable, null, null, null);如果看不到图片,这是由于需要手动定drawable适当的大小,使用drawable. ...
- [Unity3D]Unity3D游戏开发之Logo渐入渐出效果的实现
---------------------------------------------------------------------------------------------------- ...