hdu-4570-Multi-bit Trie-简单区间DP
来源:互联网 发布:有寓意的网名知乎 编辑:程序博客网 时间:2024/05/29 05:57
有的时候,你看不懂题,你就A不了题(这不是废话么。。。)
这个题实在是太恶心了,做法很简单,题意很难懂!!
题意:
这题题意确实有点难懂,起码对于我这个英语渣渣来说是这样,于是去别人的博客看了下题目意思,归纳起来如下:
给出一个长度为n的数列,将其分成若干段,要求最小,其中ai是每一段数列的第一项,bi是每一段的长度,l为将数列分成l段。
比如样例:n=7,A={1 2 4 4 5 4 3},将其分成1 2 4| 4 5| 4| 3,则其所用空间为1*2^3+4*2^2+4*2^1+3*2^1=38,而如果分成1 2| 4 4 5| 4 3,则其所用空间为1*2^2+4*2^3+4*2^2=52,比38大。
#include <iostream>#include <stdio.h>#include <string.h>#include <stdlib.h>#include <math.h>#include <ctype.h>#include <queue>#include <map>#include <algorithm>using namespace std;#define maxn 110#define LL __int64LL mp[maxn][maxn];LL a[maxn];LL dos(LL x,LL y){ if(mp[x][y])return mp[x][y]; LL minn=a[x]; for(LL i=x;i<=y;i++)minn=minn*2; if(y-x+1>20) { minn=0; for(LL i=x;i<=y;i++)minn+=a[i]*2; } for(LL i=x;i<y;i++) { minn=min(minn,dos(x,i)+dos(i+1,y)); } mp[x][y]=minn; return minn;}int main(){ int T,n; scanf("%d",&T); while(T--) { memset(mp,0,sizeof(mp)); scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%d",&a[i]); } printf("%I64d\n",dos(1,n)); } return 0;}
0 0
- hdu-4570-Multi-bit Trie-简单区间DP
- HDU 4570 - Multi-bit Trie(区间DP)
- HDU 4570 Multi-bit Trie (区间DP)
- HDU 4570 Multi-bit Trie(区间DP)
- hdu 4570 Multi-bit Trie 【区间dp】
- Hdu 4570 Multi-bit Trie(区间dp)
- HDU 4570 Multi-bit Trie(区间dp)
- hdu 4570 Multi-bit Trie (区间DP)
- dp hdu-4570-Multi-bit Trie
- hdu 4570 Multi-bit Trie(dp水题)
- HDU-4570 Multi-bit Trie (DP)
- HDU4570:Multi-bit Trie(区间DP)
- HDU4570 Multi-bit Trie 区间DP
- hdu 4570 Multi-bit Trie
- HDU4570----Multi-bit Trie----简单的DP
- HDU 4570 Multi-bit Trie 解题报告
- hdu4570Multi-bit Trie (区间DP)
- hdu4570 Multi-bit Trie
- 自定向下分析Binder 之 Binder Model(1)
- android4.4系统解决“ERRORcouldn't find native method”方法
- vs2010 x64平台调用64位DLL问题
- 到山东省是点华盛顿华盛顿还是SDH
- centos卸载软件
- hdu-4570-Multi-bit Trie-简单区间DP
- Delphi XE 6 中安装Sockets组件
- Windows2008安全加固
- 那些年我们面试过的单链表算法总结(一)
- 菜单背景全透效果
- [LeetCode]—Add Binary 两个字符串二进制相加
- zoj2588 Burning Bridges --- 求割边
- 窗口程序中使用控制台实现信息跟踪
- 编译原理 (预处理>编译>汇编>链接)