【BZOJ1019】[SHOI2008]汉诺塔(数论,搜索)
【BZOJ1019】[SHOI2008]汉诺塔(数论,搜索)
题面
题解
首先汉诺塔问题的递推式我们大力猜想一下一定会是形如\(f_i=kf_{i-1}+b\)的形式。
这个鬼玩意不好算,我们就拿着\(f_1,f_2,f_3\)之间的关系算一下,爆搜一下很容易解出直线方程。
#include<iostream>
#include<cstdio>
using namespace std;
int n,m,k,b;char ch[2];
int E[6][2];long long f[50];
int S[3][50],top[3];
int calc(int x)
{
top[0]=top[1]=top[2]=0;int ret=0,lp=0;
for(int i=x;i;--i)S[0][++top[0]]=i;
while(++ret)
{
for(int i=0;i<6;++i)
{
int u=E[i][0],v=E[i][1];
if(!top[u])continue;
if(S[u][top[u]]==lp)continue;
if(top[v]&&S[u][top[u]]>S[v][top[v]])continue;
S[v][++top[v]]=lp=S[u][top[u]--];break;
}
if(top[0]==x||top[1]==x||top[2]==x)return ret;
}
}
int main()
{
scanf("%d",&n);
for(int i=0;i<6;++i)
{
scanf("%s",ch);
E[i][0]=ch[0]-'A';
E[i][1]=ch[1]-'A';
}
f[1]=calc(1);f[2]=calc(2);f[3]=calc(3);
k=(f[3]-f[2])/(f[2]-f[1]);b=f[2]-k;
for(int i=4;i<=n;++i)f[i]=f[i-1]*k+b;
cout<<f[n]<<endl;return 0;
}
【BZOJ1019】[SHOI2008]汉诺塔(数论,搜索)的更多相关文章
- bzoj1019 [SHOI2008]汉诺塔
1019: [SHOI2008]汉诺塔 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 1030 Solved: 638[Submit][Status] ...
- bzoj千题计划109:bzoj1019: [SHOI2008]汉诺塔
http://www.lydsy.com/JudgeOnline/problem.php?id=1019 题目中问步骤数,没说最少 可以大胆猜测移动方案唯一 (真的是唯一但不会证) 设f[i][j] ...
- bzoj1019: [SHOI2008]汉诺塔(动态规划)
1019: [SHOI2008]汉诺塔 题目:传送门 简要题意: 和经典的汉诺塔问题区别不大,但是题目规定了一个移动时的优先级: 如果当前要从A柱子移动,但是A到C的优先级比A到B的优先级大的话,那就 ...
- [bzoj1019][SHOI2008]汉诺塔 (动态规划)
Description 汉诺塔由三根柱子(分别用A B C表示)和n个大小互不相同的空心盘子组成.一开始n个盘子都摞在柱子A上,大的在下面,小的在上面,形成了一个塔状的锥形体. 对汉诺塔的一次合法的操 ...
- bzoj1019 / P4285 [SHOI2008]汉诺塔
P4285 [SHOI2008]汉诺塔 递推 题目给出了优先级,那么走法是唯一的. 我们用$0,1,2$代表$A,B,C$三个柱子 设$g[i][x]$为第$x$根柱子上的$i$个盘子,经过演变后最终 ...
- 【bzoj1019】[SHOI2008]汉诺塔
1019: [SHOI2008]汉诺塔 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 1427 Solved: 872[Submit][Status] ...
- BZOJ1019 汉诺塔/洛谷P4285 [SHOI2008]汉诺塔
汉诺塔(BZOJ) P4285 [SHOI2008]汉诺塔 居然是省选题,还是DP!(我的DP菜得要死,碰见就丢分) 冥思苦想了1h+ \(\to\) ?! 就是普通的hanoi NOI or HNO ...
- 1019: [SHOI2008]汉诺塔
1019: [SHOI2008]汉诺塔 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 1495 Solved: 916[Submit][Status] ...
- 【bzoj1019】汉诺塔
[bzoj1019]汉诺塔 题意 传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1019 分析 思路1:待定系数+解方程 设\(f[n]\)为 ...
随机推荐
- odoo之ERP系统
odoo大纲 第一部分:数据库postgressql 大象 第二部分:ORM(API) 第三部分:客户端 用python软件写: .py文件 包含两部分:1.自定义部分,由自己写,定义类和功能. .继 ...
- OO——电梯作业总结
目录 电梯作业总结 程序结构与复杂度的分析 第一次作业 第二次作业 第三次作业 程序BUG的分析 互测 自动评测 有效性 总结 电梯作业总结 程序结构与复杂度的分析 第一次作业 1.设计思路 第一次作 ...
- 基于TLS证书手动部署kubernetes集群(下)
一.master节点组件部署 承接上篇文章--基于TLS证书手动部署kubernetes集群(上),我们已经部署好了etcd集群.flannel网络以及每个节点的docker,接下来部署master节 ...
- vue 使用 proxyTable 解决跨域问题
1.在 main.js 中,在引入 axios: import axios from 'axios' Vue.config.productionTip = false Vue.prototype.$a ...
- Android开发——RecyclerView特性以及基本使用方法(二)
0. 前言 随着Android的发展,虽然ListView依旧重要,但RecyclerView确实越来越多的被大家使用.但显然并不能说RecyclerView就一定优于ListView,而是应该根据 ...
- mount状态下表空间情报试验
SQL> shutdown immediate;Database closed.Database dismounted.ORACLE instance shut down.SQL> sta ...
- Js_判断浏览器
var isIE=!!window.ActiveXObject;var isIE6=isIE&&!window.XMLHttpRequest;var isIE8=isIE&&a ...
- 转 Git 常用命令大全
一. Git 常用命令速查 git branch 查看本地所有分支 git status 查看当前状态 git commit 提交 git branch -a 查看所有的分支 git branch ...
- 212. Space Replacement【LintCode by java】
Description Write a method to replace all spaces in a string with %20. The string is given in a char ...
- python 游戏(数字推理游戏Bagels)
1.游戏思路和流程图 实现功能:玩家猜测三位不一样的数字,猜错了有提示,提示分别为(位置错误数字正确),(位置和数字正确),(数字和位置都不正确) 游戏流程图 2. 使用模块和游戏提示 import ...