1013: 湖南省第十七届大学生计算机程序设计竞赛(HNCPC2021) - Semilive
Start Time:2021-12-05 18:00:00 End Time:2021-12-05 23:00:00 Current Time:2025-05-12 02:01:11 Public Ended
K (1167) : 双排积木
Time Limit: 5 Sec Memory Limit: 256 MB Submitted: 0 Solved: 0Description
一套积木有三种形状,I
型积木由 2 个正方体组成:;
L
型积木由 3 个正方体组成: ;
Y
型积木由 4 个正方体组成: 。
利用这三种积木在一个以构成积木的正方体棱长为单位的 2 × m 区域上方堆出一个特定的形状,要求任何正方体的下方没有空隙。积木个数不限且可以任意翻转,有多少种不同的方法?
不同方法的定义:假如将区域上方每个单位正方体位置进行唯一编号,两种方法至少有一个编号位的覆盖积木类型或方位不同,则视为不同的方法。
Input
不超过50组测试数据,每组数据 3 行,第一行一个整数m,表示一个 2 × m 的区域。
第2、3行分别有 m 个整数 hi, j,表示目标形状在区域第 i 行第 j 列上方以正方体棱长为单位的高度。
其中1 ≤ m ≤ 6,0 ≤ hi, j ≤ 20,∑hi, j > 0。
Output
每组数据输出对109 + 7取模的方法数。
Sample
2 1 2 2 1 5 3 4 4 4 4 1 4 2 3 3
4 19818537