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

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

f[i][j]表示i上有j个盘子移到g[i][j]上的步数

1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 #define M 20210 #define ll long long11 #define Mo 99824435312 #define pa pair
13 using namespace std;14 ll read()15 {16 char ch=getchar();17 ll x=0,f=1;18 for(;ch<'0'||ch>'9';ch=getchar())19 if(ch=='-')20 f=-1;21 for(;ch>='0'&&ch<='9';ch=getchar())22 x=x*10+ch-'0';23 return x*f;24 }25 int n,g[4][M],p[M];26 ll f[4][M];27 int main()28 {29 n=read();30 for(int i=1;i<=6;i++)31 {32 char ch[10];33 scanf("%s",ch);34 int a1=ch[0]-'A'+1,a2=ch[1]-'A'+1;35 if(p[a1])36 continue;37 p[a1]=1;38 g[a1][1]=a2;39 f[a1][1]=1;40 }41 for(int i=2;i<=n;i++)42 for(int j=1;j<=3;j++)43 {44 int y=g[j][i-1],k=1+2+3-j-g[j][i-1];45 if(g[y][i-1]==k)46 {47 f[j][i]=f[j][i-1]+1+f[y][i-1];48 g[j][i]=k;49 }50 else51 {52 g[j][i]=y;53 f[j][i]=f[j][i-1]+1+f[y][i-1]+1+f[j][i-1];54 }55 }56 printf("%lld\n",f[1][n]);57 return 0;58 }59

 

转载于:https://www.cnblogs.com/xiw5/p/5656587.html

你可能感兴趣的文章
(转)Linux-HA实战(1)— Heartbeat安装
查看>>
如何恢复oracle中已删除的表
查看>>
双向BFS(转)
查看>>
【最短路】Dijkstra+ 链式前向星+ 堆优化(优先队列)
查看>>
linux下实现keepalived+nginx高可用
查看>>
【BZOJ3791】作业
查看>>
Html Agility Pack解析Html(C#爬虫利器)
查看>>
GridView中的CheckBox选中 (JQuery)
查看>>
webform(四)简单控件
查看>>
验证码
查看>>
敏捷开发入门教程
查看>>
C#发现之旅(收藏)
查看>>
POJ1125 Stockbroker Grapevine 多源最短路
查看>>
HDU 2126 Buy the souvenirs
查看>>
顺序容器的insert使用方法
查看>>
Markdown的使用
查看>>
销售系统学习.mdl
查看>>
触发器
查看>>
mysql配置默认字符集为UTF8mb4
查看>>
WPF实现3D翻转的动画效果
查看>>