【HDU】6146 Pokémon GO
【题意】一个2*n的网格,再保证步数最少的情况下,求从任意格出发遍历完所有格的方案数,格子八连通。n<=10000,T<=100。
【算法】递推,DP
【题解】原题链接:蓝桥杯 格子刷油漆(动态规划)
这类题目最重要的是找到一个可以计算所有情况的状态表示。
对于2*x的网格,a[x]表示从左上角出发遍历完所有格子的方案数,b[x]表示从左上角出发遍历完所有格子并在左下角结束的方案数。
显然,b[x]=2*b[x-1]。
先考虑起点在左上角,有三种情况:
①先走到对面(左下角),再往右走,a[x]+=2*a[x-1]。
②终点在对面,a[x]+=b[x]。
③先走到第二列再折返再走到第二列,此时等价于第二列的第一种情况,a[x]+=4*a[x-2]。
公式合并为a[x]=2*a[x-1]+4*a[x-2]+b[x]。
一共有四个角,所以ans+=4*a[x]。
再考虑起点在第一行(不包括左右上角),必须要先遍历完一边回到下方再遍历另一边才能保证遍历完全部。
对于先遍历一边的情况,等价于出发后回到下方的b[i],再遍历另一边的情况,等价于从一角出发的a[i]。
所以对于每个中间点i,ans+=2*(2*b[i-1]*2*a[n-i])+2*(2*b[n-i]*2*a[i-1]) 。
ans=16*sigma(b[i-1]*a[n-i])(i=2~n-1)+4*a[n]。
---
有取模别写“+=”!
爆long long了要中间多写点取模……2*int是撞在ll枪口上的,多一点就爆了。
---
#include<cstdio>
#define ll long long
const int maxn=,MOD=;
ll a[maxn],b[maxn],n;
int main(){
b[]=;
for(int i=;i<=maxn;i++)b[i]=(b[i-]*)%MOD;
a[]=;a[]=;
for(int i=;i<=maxn;i++)a[i]=(*a[i-]+b[i]+*a[i-])%MOD;
int T;
scanf("%d",&T);
while(T--){
int n;
scanf("%d",&n);
ll ans=;
for(int i=;i<=n-;i++)ans=(ans+*b[i-]%MOD*a[n-i])%MOD;
ans=(ans+*a[n])%MOD;
if(n==)ans=;
printf("%lld\n",ans);
}
return ;
}
能把这个公式换成一个数组的递推公式真是太可怕了。
f[1]=2 f[2]=24 f[3]=96 f[4]=416 f[5]=1536
f[i]=f[i-1]*6-f[i-2]*8-f[i-3]*8+f[i-4]*16 (i>=6)
【HDU】6146 Pokémon GO的更多相关文章
- 【HDU】4888 Redraw Beautiful Drawings 网络流【推断解是否唯一】
传送门:pid=4888">[HDU]4888 Redraw Beautiful Drawings 题目分析: 比赛的时候看出是个网络流,可是没有敲出来.各种反面样例推倒自己(究其原因 ...
- 【HDU】2191 多重背包问题
原题目:悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 [算法]多重背包(有限背包) 动态规划 [题解]http://blog.csdn.net/acdreamers/article/detail ...
- 【HDU】6110 路径交(2017百度之星) 线段树+RMQ-LCA+树链的交
[题目]2017"百度之星"程序设计大赛 - 初赛(A) [题意]给定n个点的带边权树,m条编号1~m的路径,Q次询问编号区间[L,R]所有链的交集的长度.n<=500000 ...
- 【HDU】6148 Valley Numer 数位DP
[算法]数位DP [题意]定义V-number为从左到看单位数字未出现先递增后递减现象的数字,求0~N中满足条件的数字个数.T<=200,lenth(n)<=100 [题解]百度之星201 ...
- 【HDU】5269 ZYB loves Xor I
[算法]trie [题解] 为了让数据有序,求lowbit无法直接排序,从而考虑倒过来排序,然后数据就会呈现出明显的规律: 法一:将数字倒着贴在字典树上,则容易发现两数的lowbit就是它们岔道结点的 ...
- 【HDU】3068 最长回文
[算法]manacher [题解][算法]字符串 #include<cstdio> #include<algorithm> #include<cstring> us ...
- 【HDU】2222 Keywords Search
[算法]AC自动机 [题解]本题注意题意是多少关键字能匹配而不是能匹配多少次,以及可能有重复单词. 询问时AC自动机与KMP最大的区别是因为建立了trie,所以对于目标串T与自动机串是否匹配只需要直接 ...
- 【HDU】6012 Lotus and Horticulture (BC#91 T2)
[算法]离散化 [题解] 答案一定存在于区间的左右端点.与区间左右端点距离0.5的点上 于是把所有坐标扩大一倍,排序(即离散化). 让某个点的前缀和表示该点的答案. 初始sum=∑c[i] 在l[i] ...
- 【HDU】6242-Geometry Problem
今天忽然心血来潮打开牛客网尝试了一下一站到底 前四道题都是不到二十分钟切完,然后第五道来了道计算几何 我也不会啊,于是就觉得大力随机也许可行 然鹅被精度卡到崩溃 后来我才知道 保证有解,是保证你的精度 ...
随机推荐
- TFTP & commons-net-3.3.jar
项目需求:上传文件到服务器,TFTP 了解TFTP http://wenku.baidu.com/link?url=MhRVgIySotFMkm5ar6B71zROPMoqC7cd5cSbKJo2kx ...
- 通过调用API在JavaWeb项目中实现证件识别
本文详细介绍自己如何在JavaWeb项目中通过调用API实现证件识别. 一,Face++使用简介 二,两种方式(图片URL与本地上传)实现证件识别 一,Face++使用简介 Face++旷视人工智能开 ...
- 关于python的闭包与装饰器的实验
首先看闭包,在嵌套函数内添加返回值,可以通过外部函数读取内部函数信息 #encoding=utf-8 #闭包应用 #先定义闭包函数,并使用 def outer(func): def inner(): ...
- 剑指offer-反转链表15
题目描述 输入一个链表,反转链表后,输出新链表的表头. class Solution: # 返回ListNode def ReverseList(self, pHead): # write code ...
- 使用JDK的keytool生成Android签名证书
生成证书:keytool -genkey -alias [yourapp] -keyalg RSA -validity 20000 -keystore [yourapp].keystore 输入key ...
- BZOJ 4595 SHOI2015 激光发生器 射线,线段,偏转
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=4595 题意概述: 给出一条射线和N条线段,射线遇到线段会发生反射,令入射角alpha,出射 ...
- ios UI自动化测试学习笔记
一.一些注意事项: 1.做自动化测试时注意如果是真机话首先要设置不锁屏. 2.自动化测试过程中如果程序后台或崩溃了.脚本运行将会暂停,直到程序再次回到前台. 3.必须明确指定关闭自动测试,测试完成或中 ...
- org.json.Json Object的put和append方法比较
json.append(key,value) 会把 value 包装成一个数组 JSONObject append = new JSONObject().append("a", & ...
- MQTT在平台中的应用【本文摘自智车芯官网】
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分.该协议支持所有平台,几乎可以把所有联 ...
- C语言数组作业总结
数组作业总结 评分注意事项. 注意用Markdown语法排版,尤其注意伪代码用代码符号渲染.用符号 ``` 生成代码块. 变量名不规范,没注释,没缩进,括号不对齐,倒扣5分. PTA上写的所有代码务必 ...