博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ 1019: [SHOI2008]汉诺塔
阅读量:7037 次
发布时间:2019-06-28

本文共 696 字,大约阅读时间需要 2 分钟。

令G[i][0/1/2]表示1~i号盘最终会被统一叠到第几号柱子

    F[i][0/1/2]表示1~i号盘最终被叠起来的步数

规则是确定的,那么转移也是确定的

i从i-1转移过来

分类讨论一下

难度在于认识到所有东西都是确定的

#include
using namespace std;int G[35][3];long long F[35][3];char s[5];int main(){ int n; scanf("%d",&n); for (int i=0; i<3; i++) F[1][i]=1,G[1][i]=-1; for (int i=0; i<6; i++){ scanf("%s",s); int l=s[0]-'A',r=s[1]-'A'; if (G[1][l]==-1) G[1][l]=r; } for (int i=2; i<=n; i++) for (int x=0; x<3; x++){ int y=G[i-1][x],z=3-x-y; if (G[i-1][y]==x){ G[i][x]=y; F[i][x]=F[i-1][x]+1+F[i-1][y]+1+F[i-1][x]; } else{ G[i][x]=z; F[i][x]=F[i-1][x]+1+F[i-1][y]; } } printf("%lld\n",F[n][0]); return 0;}

  

 

转载于:https://www.cnblogs.com/silenty/p/9872586.html

你可能感兴趣的文章
UVA 11178 Morley's Theorem (计算几何)
查看>>
颜色渐变的柱状图
查看>>
基于vue-cli配置移动端自适应
查看>>
处理eclipse启动时报java.lang.IllegalStateException
查看>>
BAT美团滴滴java面试大纲(带答案版)之四:多线程Lock
查看>>
第一次作业
查看>>
51nod 1068 Bash游戏 V3 博弈
查看>>
vue-axios当只调用vue.js又需要axios请求多时
查看>>
CodeM美团点评编程大赛初赛A轮
查看>>
SSM框架快速整合的实例-学生查询
查看>>
42行代码完成深入虎穴
查看>>
symantec:硝基***针对化工厂商
查看>>
PowerShell 学习笔记——PS On MacOS
查看>>
唠唠 RDS 那些事 ——RDS 服务部署
查看>>
twisted应用中异步回调的方式及线程的应用
查看>>
c#调用oracle存储过程
查看>>
我与学院的点点滴滴
查看>>
Windows Server 2016之Nano Server简介
查看>>
C#判断鼠标在某个区域内
查看>>
centos6.4挂载iscsi网络存储
查看>>