1246 - Colorful Board

   PDF (English) Statistics Forum
Time Limit: 2 second(s) Memory Limit: 32 MB

You are given a rectangular board. You are asked to draw M horizontal lines and N vertical lines in that board, so that the whole board will be divided into (M+1) x (N+1) cells. So, there will be M+1 rows each of which will exactly contain N+1 cells or columns. The yth cell of xth row can be called as cell(x, y). The distance between two cells is the summation of row difference and column difference of those two cells. So, the distance between cell(x1, y1) and cell(x2, y2) is

|x1 - x2| + |y1 - y2|

For example, the distance between cell (2, 3) and cell (3, 2) is |2 - 3| + |3 - 2| = 1 + 1 = 2.

After that you have to color every cell of the board. For that you are given K different colors. To make the board more beautiful you have to make sure that no two cells having the same color can have odd distance between them. For example, if you color cell (3, 5) with red, you cannot color cell (5, 8) with red, as the distance between them is 5, which is odd. Note that you can keep some color unused, but you can‘t keep some cell uncolored.

You have to determine how many ways to color the board using those K colors.

Input

Input starts with an integer T (≤ 20000), denoting the number of test cases.

Each case starts with a line containing three integers M, N, K (0 ≤ M, N ≤ 19, 1 ≤ K ≤ 50).

Output

For each case, print the case number and the number of ways you can color the board. The result can be large, so print the result modulo 1000000007.

Sample Input

Output for Sample Input


4

0 0 1

0 0 2

5 5 2

5 5 1


Case 1: 1

Case 2: 2

Case 3: 2

Case 4: 0



PROBLEM SETTER: MD. ARIFUZZAMAN ARIF

SPECIAL THANKS: JANE ALAM JAN

   PDF (English) Statistics Forum
Time Limit: 2 second(s) Memory Limit: 32 MB

You are given a rectangular board. You are asked to draw M horizontal lines and N vertical lines in that board, so that the whole board will be divided into (M+1) x (N+1) cells. So, there will be M+1 rows each of which will exactly contain N+1 cells or columns. The yth cell of xth row can be called as cell(x, y). The distance between two cells is the summation of row difference and column difference of those two cells. So, the distance between cell(x1, y1) and cell(x2, y2) is

|x1 - x2| + |y1 - y2|

For example, the distance between cell (2, 3) and cell (3, 2) is |2 - 3| + |3 - 2| = 1 + 1 = 2.

After that you have to color every cell of the board. For that you are given K different colors. To make the board more beautiful you have to make sure that no two cells having the same color can have odd distance between them. For example, if you color cell (3, 5) with red, you cannot color cell (5, 8) with red, as the distance between them is 5, which is odd. Note that you can keep some color unused, but you can‘t keep some cell uncolored.

You have to determine how many ways to color the board using those K colors.

Input

Input starts with an integer T (≤ 20000), denoting the number of test cases.

Each case starts with a line containing three integers M, N, K (0 ≤ M, N ≤ 19, 1 ≤ K ≤ 50).

Output

For each case, print the case number and the number of ways you can color the board. The result can be large, so print the result modulo 1000000007.

Sample Input

Output for Sample Input


4

0 0 1

0 0 2

5 5 2

5 5 1


Case 1: 1

Case 2: 2

Case 3: 2

Case 4: 0



PROBLEM SETTER: MD. ARIFUZZAMAN ARIF

SPECIAL THANKS: JANE ALAM JAN

思路:格子可以分成两类,就像棋格一样

那么我们只要看下黑色的棋格放的情况,来决定白色格放的颜色,也就是在黑色格中没填的颜色,假如是x,黑格数是k,那么黑格放的种数就是xk;那么在乘以白格的方案数就行。

那么我们需要讨论,白格中有多少种颜色,以及它的种数,白格数是y的话,我们要求的是,当有i种颜色时的方案数,那么这就转换成,将y个东西放入i个盒子的不同方案数。

那么就是求strlin(y,i)*(i!);

 1 #include<stdio.h>
 2 #include<algorithm>
 3 #include<string.h>
 4 #include<iostream>
 5 using namespace std;
 6 typedef long long LL;
 7 const LL N= 1000000007;
 8 LL yan[1005][1005];
 9 LL STL[1005][1005];
10 LL pp[1005];
11 LL quick(LL n,LL m);
12 int main(void)
13 {
14         int i,j,k;
15         scanf("%d",&k);
16         int s;
17         yan[0][0]=1;
18         for(i=1; i<=1000; i++)
19         {
20                 for(j=0; j<=i; j++)
21                 {
22                         if(j==0||i==j)
23                                 yan[i][j]=1;
24                         else
25                         {
26                                 yan[i][j]=(yan[i-1][j]+yan[i-1][j-1])%N;
27                         }
28                 }
29         }
30         pp[0]=1;
31         for(i=1;i<=1000;i++)
32             pp[i]=(pp[i-1]*i)%N;
33         memset(STL,0,sizeof(STL));
34         STL[0][0]=1;
35         STL[1][0]=0;
36         STL[1][1]=1;
37         for(i=2; i<=1000; i++)
38         {
39                 for(j=1; j<=i; j++)
40                 {
41                         if(j==1||i==j)
42                                 STL[i][j]=1;
43                         else
44                         {
45                                 STL[i][j]=((STL[i-1][j]*j)%N+STL[i-1][j-1])%N;
46                         }
47                 }
48         }
49         for(s=1; s<=k; s++)
50         {
51                 int x1,x2,x3,x4;
52                 scanf("%d %d %d",&x1,&x2,&x3);
53                 x1+=1;
54                 x2+=1;
55                 LL sum=(x1*x2);
56                 LL he=(sum+1)/2;
57                 LL cnt=0;
58                 for(i=1; i<=min((LL)x3,he); i++)
59                 {
60                         LL  x=x3-i;
61                         LL kk=quick(x,sum-he);
62                         LL ak=((STL[he][i]*yan[x3][i]%N)*kk)%N;
63                         cnt=(cnt+ak*pp[i]%N)%N;
64                 }
65                 printf("Case %d: ",s);
66                 printf("%lld\n",cnt);
67         }
68         return 0;
69 }
70
71 LL quick(LL n,LL m)
72 {
73         LL ans=1;n%=N;
74         while(m)
75         {
76                 if(m&1)
77                         ans=(ans*n)%N;
78                 n=(n*n)%N;
79                 m/=2;
80         }
81         return  ans;
82 }
时间: 2024-12-17 19:54:44

1246 - Colorful Board的相关文章

LightOJ - 1246 Colorful Board(DP+组合数)

http://lightoj.com/volume_showproblem.php?problem=1246 题意 有个(M+1)*(N+1)的棋盘,用k种颜色给它涂色,要求曼哈顿距离为奇数的格子之间不能涂相同的颜色,每个格子都必须有颜色,问可行的方案数. 分析 经一波分析,根据曼哈顿距离为奇数这一信息,可以将棋盘分为两部分,也就是相邻格子不能有相同颜色.一种颜色只能在一个部分中出现.现在考虑对一个部分的格子操作, dp[i][j]表示i个格子选择用了j种颜色的方案数,于是可以得到这样的递推式:

LightOJ - 1246 - Colorful Board(DP)

链接: https://vjudge.net/problem/LightOJ-1246 题意: You are given a rectangular board. You are asked to draw M horizontal lines and N vertical lines in that board, so that the whole board will be divided into (M+1) x (N+1) cells. So, there will be M+1 ro

开源软件Review Board

开源软件, Review Board 代码审查的. https://www.reviewboard.org/

419. Battleships in a Board

Given an 2D board, count how many different battleships are in it. The battleships are represented with 'X's, empty slots are represented with '.'s. You may assume the following rules: You receive a valid board, made of only battleships or empty slot

u-boot启动流程分析(2)_板级(board)部分

转自:http://www.wowotech.net/u-boot/boot_flow_2.html 目录: 1. 前言 2. Generic Board 3. _main 4. global data介绍以及背后的思考 5. 前置的板级初始化操作 6. u-boot的relocation 7. 后置的板级初始化操作 1. 前言 书接上文(u-boot启动流程分析(1)_平台相关部分),本文介绍u-boot启动流程中和具体版型(board)有关的部分,也即board_init_f/board_i

AC日记——丑数 codevs 1246

1246 丑数 USACO 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 题目描述 Description 对于一给定的素数集合 S = {p1, p2, ..., pK}, 来考虑那些质因数全部属于S 的数的集合.这个集合包括,p1, p1p2, p1p1, 和 p1p2p3 (还有其它).这是个对于一个输入的S的丑数集合.注意:我们不认为1 是一个丑数.你的工作是对于输入的集合S去寻找集合中的第N个丑数.longint(signe

ACM: Gym 100935G Board Game - DFS暴力搜索

Board Game Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Gym 100935G Description standard input/outputStatements Feras bought to his nephew Saleem a new game to help him learning calculating. The game consists of a boar

CodeForces 505B Mr. Kitayuta&#39;s Colorful Graph

Mr. Kitayuta's Colorful Graph Time Limit:1000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Submit Status Practice CodeForces 505B Description Mr. Kitayuta has just bought an undirected graph consisting of n vertices and m edges. The

[蓝牙] 3、&lt;KEIL path&gt; \ARM\Device\Nordic\nrf51822\Board\pca10001\s110\ble_app_hrs BLE心率检测工程

Heart Rate Example The Heart Rate Application is a firmware example that implements the Heart Rate profile using the hardware delivered in the nRF51822 Development Kit. The source code and project file can be found in the <InstallFolder>\Nordic\nrf5