hdu 4570 Multi-bit Trie 【区间dp】
来源:互联网 发布:ubuntu l2tp 编辑:程序博客网 时间:2024/05/19 22:04
点击打开链接
题意难度太高,后来问llm说大致是 给你n个数,然后让你随意划分成任意段区间(每一段最长为20),保证最后的区间和最小,
每一段区间值的算法是这样的,该区间值等于区间首字母*2^(区间长度);
题解:区间dp,
初始化: 长度最长为20,那么当 l<20时, dp[i][j]=a[i]*pow(2,l)*2;
when i>20: dp[i][j]=(sum[j]-sum[i-1])*2; 所有数字都是单个区间,没有合并。
之后遍历每个区间即可。
#include<bits/stdc++.h>#define ll long longusing namespace std;const int maxn=105;ll n,m,p,h,c;ll a[maxn],sum[maxn];ll dp[maxn][maxn];ll Pow(int x){ ll ret=1; for(int i=1;i<=x;++i) ret*=2; return ret;}int main(){ int t; scanf("%d",&t); while(t--){ scanf("%lld",&n); for(int i=1;i<=n;++i){ scanf("%lld",&a[i]); sum[i]=sum[i-1]+a[i]; } for(int l=0;l<=n;++l){ for(int i=1;i+l<=n;++i){ int j=i+l; if(l<20) dp[i][j]=a[i]*Pow(l); else dp[i][j]=sum[j]-sum[i-1]; for(int k=i;k<=j;++k){ dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j]); } } } printf("%lld\n",dp[1][n]*2); } 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
- HDU 4570 Multi-bit Trie 解题报告
- hdu4570Multi-bit Trie (区间DP)
- HDU4570----Multi-bit Trie----简单的DP
- hdu4570 Multi-bit Trie
- 【AtCoder Grand 017C】Snuke and Spells 题解
- 1.React中文之Hello World
- 32-从1到n整数中X出现的次数
- 软件测试风险分析列表-待完善
- MyEclipse中复制项目或修改项目名字出现问题
- hdu 4570 Multi-bit Trie 【区间dp】
- leetcode[Nim Game]
- 23&24day 网络、cell的代码块,以及常见错误
- 域间路由的安全性增强机制-FRA(快速路由证明)
- VisionPro--- CogGraphicLabel
- iOS 从0到1搭建高可用App框架(二)
- Python中利用set去除列表(list)重复元素
- 融云SDK设置头像与消息监听注意事项
- Cadence学习总结