百度之星复赛--Pokémon GO----dp
2017-08-20 10:52
369 查看
Pokémon GO
Accepts: 738Submissions: 1725
Time Limit: 3000/1500 MS (Java/Others)
Memory Limit: 32768/32768 K (Java/Others)
Problem Description
众所周知,度度熊最近沉迷于 Pokémon GO。
![](http://bestcoder.hdu.edu.cn/data/images/C777-1003-1.jpg)
今天它决定要抓住所有的精灵球!
为了不让度度熊失望,精灵球已经被事先放置在一个2*N的格子上,每一个格子上都有一个精灵球。度度熊可以选择任意一个格子开始游戏,抓捕格子上的精灵球,然后移动到一个相邻的至少有一个公共点的格子上继续抓捕。例如,(2, 2) 的相邻格子有(1, 1), (2, 1) 和 (1, 2) 等等。
现在度度熊希望知道将所有精灵球都抓到并且步数最少的方案数目。两个方案被认为是不同,当且仅当两个方案至少有一步所在的格子是不同的。
Input
第一行为T,表示输入数据组数。
每组数据包含一个数N。
●1≤T≤100
●1≤N≤10000
Output
对每组数据输出方案数目,结果对 1 000 000 007 取模。
Sample Input
Copy
3 1 2 3
Sample Output
Copy
2 24 96
题目链接:http://bestcoder.hdu.edu.cn/contests/contest_showproblem.php?cid=777&pid=1003
这是一个普通的dp。
一个可行的思路是考虑三个子问题
全部走完2*N个格子的方法总数DP
全部走完2*N个格子并且起点是最左边的两个格子之一的方法总数DP2
全部走完2*N个格子并且起点和终点分别是最左边的两个格子的方法总数DP3
组合2和3的答案就可以得到1 了。
代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#define LL long long
using namespace std;
const int mod=1e9+7;
LL dp[10001];
int main(){
dp[1]=2;
dp[2]=24;
dp[3]=96;
dp[4]=416;
LL ll=6,rr=14,sum=2*2*2*2,cnt=26;
for(int i=5;i<=10000;i++){
LL ti=rr;
rr+=ll+2;
ll=ti;
rr%=mod;
sum=sum*2%mod;
cnt+=rr;
cnt%=mod;
dp[i]=sum*cnt%mod;
}
int t;
scanf("%d",&t);
while(t--){
int n;
scanf("%d",&n);
cout<<dp
<<endl;
}
return 0;
}
相关文章推荐
- 【HDU6146】【2017百度之星复赛-C】Pokémon GO(动态规划)(dp)
- HDU-2017"百度之星"程序设计大赛-复赛-1003-Pokémon GO
- HDU 6146 && 2017 百度之星复赛 1003 Pokémon GO(递推)
- 2017百度之星复赛:1003. Pokémon GO(递推)
- HDU6146(2017百度之星程序设计大赛 - 复赛)[Pokémon GO]--DP
- 2017百度之星复赛 1003 Pokémon GO 递推
- HDU 6146 Pokémon GO (dp)
- 2017百度之星复赛 hdu 6148 Valley Numer (数位dp)
- 2017 百度之星 复赛 Valley Numer(数位dp)
- HDU 6148 && 2017 百度之星复赛 1005 Valley Numer(数位dp)
- hdu 6146 Pokémon GO(DP)
- 2017"百度之星"程序设计大赛 - 复赛1005&&HDU 6148 Valley Numer【数位dp】
- Hdu6146 Pokémon GO(2017百度之星程序设计大赛 - 复赛)
- HDU6146 Pokémon GO【DP】
- HDU 5713 K个联通块 状压dp枚举子集 (2016百度之星复赛)
- HDU 6146 Pokémon GO(dp)
- hdu 5713 K个联通块 2016百度之星复赛1002 DP
- HDU5259(百度之星复赛1002)——弹吉他(DP)
- HDU - 6146 Pokémon GO(表格dp)
- 百度之星复赛 1004 / hdu5715 二分dp+trie