LYK loves graph(graph)

题目:

LYK loves graph(graph)

Time Limit:2000ms   Memory Limit:128MB

LYK喜欢花花绿绿的图片,有一天它得到了一张彩色图片,这张图片可以看做是一张n*m的网格图,每个格子都有一种颜色去染着,我们用-1至n*m-1来表示一个格子的颜色。特别地,-1代表这个颜色是黑色,LYK不喜欢黑色!

LYK想将剪下这张图片中的一张子图片来(四联通块),使得这个子图片不存在黑色的格子,并且至少有k个不同的颜色。

但是每个格子有自己的脾气,特别的,第i行第j列这个格子如果被LYK选中了,LYK需要花费相应的代价。LYK想花费尽可能少的代价来剪下一张满足自己要求的图片。

 

输入格式(graph.in)

第一行三个整数,n,m,k.

接下来n行,每行m个数,表示图片中每个格子的颜色,每个数在-1到n*m-1之间。

  接下来n行,每行m个数,表示选择每个位置所需要的代价。

 

输出格式(graph.out)

一行,表示最小代价和。

 

输入样例

3 3 3

0 0 1

2 3 3

-1 2 1

3 1 5

4 10 1

9 3 4

输出样例

7

数据范围

对于20%的数据:1<=n,m,k<=4。

对于另外30%的数据:不同的颜色数<=10(不包括-1)。

对于再另外30%的数据:1<=n<=2,1<=m<=15。

对于100%的数据:1<=n,m<=15,1<=k<=7,1<=ai,j<=100000。

数据保证一定有解。

题解:

首先对于前20暴力搞搞就好了

另30是显然的斯坦纳树

满分做法 就不那么正常了。。。

把每种颜色随机映射成1-7的某种颜色,然后跑斯坦纳树

跑个400组。。。

每一次的时间是3^7*225

每一次的概率(225/7)^7/C(225,7)=6.1*10-3

原文地址:https://www.cnblogs.com/yinwuxiao/p/8476716.html