Problem

有一个2n的方格矩阵

在一个格子上可以往旁边8个方向走(如果有格子),求有多少方案把2
n走完

Solution

我们用Fi表示从一个角出发走遍所有格子回到这一列另外一点的方案数

显然,F1 = 1,Fn = 2 * Fn-1 = 2^(n-1)



我们再用Gi表示从一个角出发,走遍所有格子的方案数

那么Gi = Fi + 2 * Gi-1 + 4 * Gi-2



所以四个角出发的方案便为4Gn

我们再考虑从中间的列出发的方案:

每一列可以从上下两个格子出发,然后有2
(2 * Fi * Gn−i + 2 * Fn−i+1 * Gi−1)种方案

Notice

要考虑全所有情况

Code

#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
#define sqz main
#define ll long long
#define reg register int
#define rep(i, a, b) for (reg i = a; i <= b; i++)
#define per(i, a, b) for (reg i = a; i >= b; i--)
#define travel(i, u) for (reg i = head[u]; i; i = edge[i].next)
const int INF = 1e9, N = 10000, mo = INF + 7;
const double eps = 1e-6, phi = acos(-1);
ll mod(ll a, ll b) {if (a >= b || a < 0) a %= b; if (a < 0) a += b; return a;}
ll read(){ ll x = 0; int zf = 1; char ch; while (ch != '-' && (ch < '0' || ch > '9')) ch = getchar();
if (ch == '-') zf = -1, ch = getchar(); while (ch >= '0' && ch <= '9') x = x * 10 + ch - '0', ch = getchar(); return x * zf;}
void write(ll y) { if (y < 0) putchar('-'), y = -y; if (y > 9) write(y / 10); putchar(y % 10 + '0');}
ll D[N + 5], E[N + 5];
int main()
{
int T_T = read();
D[1] = 1;
rep(i, 2, N) D[i] = D[i - 1] * 2 % mo;
E[0] = 0, E[1] = 1, E[2] = 6;
rep(i, 3, N) E[i] = (D[i] + E[i - 1] * 2 + E[i - 2] * 4) % mo;
rep(i, 1, T_T)
{
int n = read();
if (n == 1)
{
puts("2");
continue;
}
ll ans = E[n];
rep(j, 2, n - 1) ans = (ans + D[j] * E[n - j] + D[n - j + 1] * E[j - 1]) % mo;
write(ans * 4 % mo); puts("");
}
}

[HDU6146]Pokémon GO的更多相关文章

  1. 【HDU-6146】Pokémon GO(dp)

    百度之星2017复赛1003 HDU-6146 Pokémon GO 题意 两行n列,只能到相邻格子,可以斜着.求遍历的方案数. 题解 dp[i]从一个点出发遍历长度i最后回到这一列的方案数 dp2[ ...

  2. 2017"百度之星"程序设计大赛 - 复赛1003&&HDU 6146 Pokémon GO【数学,递推,dp】

    Pokémon GO Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  3. Pokémon Go呼应设计:让全世界玩家疯狂沉迷

    引言:什么样的呼应设计会让移动游戏玩家沉迷?那必须为玩家构建一个属于玩家本人或者被玩家认可的虚拟环境,或者说是被玩家认可的虚拟世界.在移动游戏时代,想要做到这一点并不容易.但Pokémon Go却做到 ...

  4. Magisk+Xposed+Root switch+Pokémon GO

    If you follow Android Police, there's a good chance you've got a rooted device, whether it be an eas ...

  5. Hackerearth: Mathison and the Pokémon fights

    Mathison and the Pokémon fights code 这是一道比较有意思,出的也非常好的题目. 给定$n$个平面上的点$(x_i, y_i)$,(允许离线地)维护$Q$个操作:1. ...

  6. hdu 6146 Pokémon GO (计数)

    Problem Description 众所周知,度度熊最近沉迷于 Pokémon GO. 今天它决定要抓住所有的精灵球!为了不让度度熊失望,精灵球已经被事先放置在一个2*N的格子上,每一个格子上都有 ...

  7. C2. Pokémon Army (hard version) 解析(思維)

    Codeforce 1420 C2. Pokémon Army (hard version) 解析(思維) 今天我們來看看CF1420C2 題目連結 題目 略,請直接看原題. 前言 根本想不到這個等價 ...

  8. C1. Pokémon Army (easy version) 解析(DP)

    Codeforce 1420 C1. Pokémon Army (easy version) 解析(DP) 今天我們來看看CF1420C1 題目連結 題目 對於一個數列\(a\),選若干個數字,求al ...

  9. HDU 6146 Pokémon GO DP,计数

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6146 题意:~ 解法:原题..http://blog.csdn.net/y990041769/arti ...

随机推荐

  1. ASM磁盘组剔盘、加盘实施过程

    Task:从一个ASM磁盘组中剔除一块盘,加入到另一个ASM磁盘组. 环境:AIX6.1 + Oracle RAC 11.2.0.3 前期准备: 1.查看DG磁盘组空间情况: --查看DG磁盘组空间情 ...

  2. How do you explain Machine Learning and Data Mining to non Computer Science people?

    How do you explain Machine Learning and Data Mining to non Computer Science people?   Pararth Shah, ...

  3. phpcms栏目点击选中

    点击选中(没有二级栏目) {pc:content action="category" catid="0" num="4" siteid=&q ...

  4. z-tree学习笔记

    做项目时,需要用到带复选框的tree.经比较后优选了ztree,功能强大,文档清晰. http://www.treejs.cn/v3/api.php 直接上代码吧. 1.下载ztree后.将里面需要用 ...

  5. C#中哈希表(HashTable)的用法详解以及和Dictionary比较

    1.  哈希表(HashTable)简述 在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似keyvalue的键值对, ...

  6. Html table、thead、tr、th、td 标签

    Html table.thead.tr.th.td 标签 案例一 <!-- table 表格标签,配置表格使用.border="1" 添加表格框架 --> <ta ...

  7. oracle查询buffer cache中undo大小

    1.Does undo buffer exists or changes will directly write to undo datafiles? Undo blocks are database ...

  8. 4. Dubbo原理解析-代理之接口定义 (转)

    转载自  斩秋的专栏  http://blog.csdn.net/quhongwei_zhanqiu/article/details/41577159 一:ProxyFactory的接口定义 impo ...

  9. opencv3.0之后IPLimage转换成MAT的问题

    转自http://www.cnblogs.com/edver/p/5187190.html IplImage * ipl = ...; cv::Mat m = cv::cvarrToMat(ipl); ...

  10. this指向问题,只提供案例,不做任何分析

    希望大家在测试的道路上找到答案,阔步前行 <script type="text/javascript"> /*this指向 console.log(this); fun ...