Codeforces Round #230 (Div. 1) B. Tower of Hanoi
来源:互联网 发布:带着淘宝穿古代txt下载 编辑:程序博客网 时间:2024/05/22 01:57
题意:
有权值的汉若塔问题,问怎样完成任务使得花费最小。
思路:
就是一个简单的dp,有两种转移,
1. dp[x][a][c]=dp[x-1][a][b]+cost[a][c]+dfs[x-1][b][c];
2. dp[x][a][c]=dp[x-1][a][c]+cost[a][b]+dp[x-1][c][a]+cost[b][c]+dp[x-1][a][c];
很好理解,不用解释了。
感想:
这场cf打的特不在状态,第一题读了很久,题意还读错了,后来又读,想到暴力思路了还不敢下手写,怕TLE,写了特判还错了,WA了一次,以为是精度问题还瞎改了一会。。。 = = 第二题也是瞎想,最后想到思路了,好简单的样子,但没时间了。。。跪了,好吧,这不是借口,实力太菜,没办法,又掉到1700以下了。。。加油吧,快点能稳定在1700吧。
代码:
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <string>#include <map>#include <stack>#include <vector>#include <set>#include <queue>#pragma comment (linker,"/STACK:102400000,102400000")#define maxn 205#define MAXN 1005#define mod 1000000009#define INF 0x3f3f3f3f#define pi acos(-1.0)#define eps 1e-6typedef long long ll;using namespace std;ll n,m,k,ans,cnt,tot,flag;ll cost[4][4],dp[45][4][4];ll dfs(ll x,ll a,ll c){ if(x==0) return 0; if(dp[x][a][c]!=m) return dp[x][a][c]; ll i,j,t,b,best=m; b=6-a-c; t=dfs(x-1,a,b)+cost[a][c]+dfs(x-1,b,c); best=min(best,t); t=2*dfs(x-1,a,c)+cost[a][b]+dfs(x-1,c,a)+cost[b][c]; best=min(best,t); dp[x][a][c]=best; return best;}int main(){ ll i,j,t; m=1LL<<60; for(i=1;i<=3;i++) { for(j=1;j<=3;j++) { scanf("%I64d",&cost[i][j]); } } scanf("%I64d",&n); for(i=1;i<=n;i++) for(j=1;j<=3;j++) for(int k=1;k<=3;k++) dp[i][j][k]=m; ans=dfs(n,1,3); printf("%I64d\n",ans); return 0;}
0 0
- Codeforces Round #230 (Div. 1) B. Tower of Hanoi
- Codeforces Round #230 (Div. 1) B. Tower of Hanoi 记忆化搜索
- Codeforces Round #230 (Div. 2) D - Tower of Hanoi
- Codeforces Round #230 (Div. 2) C. Blocked Points D. Tower of Hanoi
- Codeforces Round #230 (Div. 2) C. Blocked Points D. Tower of Hanoi
- Codeforces Round #230 (Div. 2) D. Tower of Hanoi (加强版汉诺塔,DP)
- Codeforces 392B Tower of Hanoi
- Codeforces 392B Tower of Hanoi(DP)
- Tower of Hanoi CodeForces 392B
- codeforces Tower of Hanoi
- Codeforces Round #356 (Div. 1)-B. Bear and Tower of Cubes
- codeforces 392B Tower of Hanoi 记忆化搜索
- codeforces 392 B. Tower of Hanoi(汉诺塔 DP)
- Codeforces 101243 B Hanoi tower
- codeforces 230 div2 D Tower of Hanoi DP
- 1-6 Tower of Hanoi
- Codeforces Round #356 (Div. 1)D. Bear and Tower of Cubes【pair使用】
- Codeforces 392B Tower of Hanoi(递归+记忆化搜索)
- 关于C++ const 的全面总结
- C++中的delete和delete[]的区别
- 分享网上的一个小蜜蜂游戏
- Android 如何监听返回键
- 『算法学习笔记』2nd day. 分支程序设计
- Codeforces Round #230 (Div. 1) B. Tower of Hanoi
- Linux makefile 教程 非常详细,且易懂
- 虚电路(Virtual Circuit)的概念
- ajax跨域问题
- 系统架构:Web应用架构的新趋势---前端和后端分离的一点想法
- java日志,需要知道的几件事
- 产业转型季运营商现离职潮
- AAC规格(LC,HE,HEv2)及性能对比
- 计算机视觉与图像处理、模式识别、机器学习学科之间的关系