4271. 【NOIP2015模拟10.27】魔法阵

该博客讨论了帕秋莉在研究魔法阵时遇到的问题,她需要计算将k种不同元素灌注到法阵中k个不重叠三角形的不同方法数。问题涉及到动态规划(DP)解决,并给出了输入输出示例及数据约束。
摘要由CSDN通过智能技术生成

Description

帕秋莉·诺蕾姬,有着“不动的大图书馆” 的称号,擅长使用各种各样的属性魔法。
——《东方求闻史记》
一如既往地,帕秋莉在图书馆中研究着魔法。今天,她在研究一本魔法书中的法阵。
这个法阵可以看成是按下面的规则生成一个规模为n(n 为非负整数) 的图形:
1. 在直角坐标系xOy 中,画4 条线段:[(0,0), (2^n,0)], [(0, 0), (��-2^n, 0)],[(0, 0), (0, 2^n)], [(0, 0), (0,-��2^n)]。
2. 对于所有的i = 1, 2, ……, n,画两个正方形,一个以(0, 2^i), (0,-��2^i),(2^i, 0), (��-2^i, 0) 为顶点,另一个以(��-2i-��1,-2i-��1),(��-2i-��1,2i-��1), (��2i-��1,-2i-��1)(��2i-��1,2i-��1) 为顶点。
3. 画一个以(1, 0), (��-1, 0), (0,-1), (0, 1) 为顶点的正方形。
比如,当n = 0 时的法阵是这样的:

当n = 2 时的法阵是这样的:

帕秋莉已经画出了这个巨大的法阵, 并且她能够同时控制k 种不同的属性元素。接下来,她要将这k 种元素分别依次灌注进法阵中的k 个不重叠不相交的三角形中,即这k 个三角形要灌注进不同的元素。这样,这个法阵就会被激活。
然而,灌注的方法有许多种。为了能最大限度地进行实验,帕秋莉想把所有的方法都实验一遍。而摆在她面前的问题是,总共有多少种不同的灌注方法呢?
注意,由于是法阵,看起来是中心对称或轴对称的两个三角形,也是实质不等同的。或者说,假如两个方案A 和B,只有通过旋转、翻转或二者组合才能使所有相同位置的三角形被灌注的元素相同,A 和B 仍然是不同的方案。只有本来所有相同位置的三角形被灌注的元素相同才算是相同的方案。
由于方法数会很大,帕秋莉只需要你输出模1,000,000,007(10^9 + 7) 的结果就可以了。

Input

输入文件magic.in。
一共一行两个整数n,k,意义如题中所述。

Output

输出文件magic.out。
一共一行一个整数res,表示灌注方案数模1,000,000,007(109 + 7) 得到的结果。

Sample Input

输入1:
0 0
输入2:
0 1
输入3:
0 2
输入4:
1 1

Sample Output

输出1:
1
输出2:
8
输出3:
32
输出4:
32

Data Constraint

对于15% 的数据,k <= 1。
对于30% 的数据,k <= 2。
另外,有15% 的数据,满足n <= 2。
对于100% 的数据,0<= n <= 200,0<= k <= min(200, 8n + 4)。

思路:DP,额,请自行参悟

#include <cstring>
#include <iostream>
#include<cstdio>
#include<vector>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值