HDU 1207 汉诺塔II DP
来源:互联网 发布:java foreach能倒序 编辑:程序博客网 时间:2024/06/05 17:19
题意:汉诺塔由三柱变成了四柱,求从A移到C的最小步数。
思路:用F[n]表示把n个盘子从A通过B,D移到C的最小步数。采取三个步骤,首先,把x个盘子从A通过C,D移到B需要F[x]步,然后,把n-x的盘子从A通过D移到C,不能利用B柱了(B柱上所有的盘子数比A柱都小),需要2n−x−1 步,最后把B柱上的盘子通过A,D柱移到C柱,需要F[x]步。可以看到x去不同值得时候,F[n]也会不同所以DP方程F[n]=max(2∗F[x]+2n−x−1)i=1…n
坑点:可能会遇到263 这个是爆了long long的,可以用unsigned long long
http://acm.hdu.edu.cn/showproblem.php?pid=1207
/********************************************* Problem : HDU 1207 Author : NMfloat InkTime (c) NM . All Rights Reserved .********************************************/#include <map>#include <set>#include <queue>#include <cmath>#include <ctime>#include <cstdio>#include <cstring>#include <cstdlib>#include <iostream>#include <algorithm>#define rep(i,a,b) for(int i = a ; i <= b ; i ++)#define rrep(i,a,b) for(int i = b ; i >= a ; i --)#define repE(p,u) for(Edge * p = G[u].first ; p ; p = p -> next)#define cls(a,x) memset(a,x,sizeof(a))#define eps 1e-8using namespace std;const int MOD = 1e9+7;const int INF = 0x3f3f3f3f;const int MAXN = 1e5;const int MAXE = 2e5;typedef long long LL;typedef unsigned long long ULL;int T,n,m,k;ULL base[65];ULL ans[65];void init() { base[0] = 1; rep(i,1,63) base[i] = base[i-1] * 2; cls(ans,0x3f); ans[1] = 1 ; ans[2] = 3; ans[3] = 5; rep(i,4,64) { rep(x,1,i) { ans[i] = min(ans[i],2*ans[x]+base[i-x]-1); } }}void input() {}void solve() { printf("%I64u\n",ans[n]);}int main(void) { //freopen("a.in","r",stdin); //scanf("%d",&T); //while(T--) { init(); while(~scanf("%d",&n)) { input(); solve(); } return 0;}
0 0
- HDU 1207 汉诺塔II DP
- hdu 1207 汉诺塔II (DP)
- hdu 1207 汉诺塔II
- HDU 1207 汉诺塔II
- HDU 1207 汉诺塔II
- hdu 1207 汉诺塔II
- hdu 1207 汉诺塔II
- hdu 1207 汉诺塔II
- HDU 1207汉诺塔II
- HDU 1207 汉诺塔II
- hdu 1207 汉诺塔II
- hdu 1207 汉诺塔II
- HDU 1207 汉诺塔II
- HDU 1207 汉诺塔II
- HDU 1207 汉诺塔II
- HDU 1207 汉诺塔II
- hdu 1207 汉诺塔II
- HDU 1207 汉诺塔II
- WebSocket的过程与理解
- 【郝斌数据结构自学笔记】57-59_递归8 _ 汉诺塔_1线性结构总复习 2线性结构和非线性结构关系 3栈队列链表数组之间的关系【重点】
- 在win10+Linux Ubuntu双系统下安装win xp三系统的痛苦经历
- Java String StringBuffer StringBuilder
- Android PullZoomView:PullToZoomListViewEx(1)
- HDU 1207 汉诺塔II DP
- 利用 RecyclerView 实现垂直交错的网格
- CStdioFile Class
- Android
- Parquet_3. 在 Impala, Hive, Pig, MR中使用 Parquet File -- 待完善
- 【C语言提高30】二级指针强化训练
- 【郝斌数据结构自学笔记】60-65_树的定义_树的专业术语解释_树的分类_二叉树连续存【重点】_二叉树的链式存储_普通树的存储
- 连接数据库
- DynamicAPK基本概念