codeforces 229 D Towers 贪心+DP
来源:互联网 发布:交换机网络风暴 编辑:程序博客网 时间:2024/06/03 01:15
http://codeforces.com/problemset/problem/229/D
题目大意:有n(1<=n<=5,000)座塔排在一条直线上,从左到右每个塔的高度分别为hi(1<=hi<=100,000),每次操作你可以选择一座塔(假设是第i座),用吊车把它吊起来,然后放到与它相邻的一座塔上(可以是第i-1座也可以是第i+1座),这样,新塔的高度为两座塔的和,完成操作后,塔的总数减少一座。问最少需要多少次操作可以使得所有的塔从左到右形成一个非递减序列。
题目分析:刚拿到这题的时候想的是贪心,然而贪心在最后处理时可能会导致其余塔高无法组成新塔。考虑dp;
首先寻找题目当中的状态,显然,当已知前j座塔高的最小操作步数时时,当前塔i的最小操作步数可以由前j座塔转移过来,满足无后效性原则;方程:f[i]=f[j]+i-j-1; 接着考虑转移条件:当这座新塔高大于等于前面那座塔高(记录为h[i])就符合转移条件;于是用sum[i]数组作为前i个的塔高之和方便处理。 初始化:由定义可知默认为INF;f[0]=0;h[0]=0;
#include<cstdio>#include<cstdlib>#include<cstring>#include<iostream>#include<algorithm>#include<functional>#include<cmath>#include<cctype>#include<cassert>#include<climits>using namespace std;#define For(i,n) for(int i=1;i<=n;i++)#define Rep(i,n) for(int i=0;i<n;i++)#define Fork(i,k,n) for(int i=k;i<=n;i++)#define ForD(i,n) for(int i=n;i;i--)#define Forp(x) for(int p=pre[x];p;p=next[p])#define RepD(i,n) for(int i=n;i>=0;i--)#define MEM(a) memset(a,0,sizeof(a))#define MEMI(a) memset(a,127,sizeof(a))#define MEMi(a) memset(a,128,sizeof(a))#define INF (2139062143)#define phiF (1000000006)#define MAXN (1000000+10)typedef long long ll;int n,a[5005],f[5005],sum[5005],h[5005],x;int main(){scanf("%d",&n);For (i,n){scanf("%d",&x); sum[i]=sum[i-1]+x; } MEMI(h);MEMI(f);f[0]=0;h[0]=0;For (i,n){Rep (j,i){if (sum[i]-sum[j]>=h[j]&&f[i]>=f[j]+i-j-1){f[i]=f[j]+i-j-1;if (h[i]>sum[i]-sum[j])h[i]=sum[i]-sum[j]; }}}printf("%d",f[n]);}
0 0
- Codeforces 229D Towers 贪心 + dp
- codeforces 229 D Towers 贪心+DP
- codeforces 229D Towers DP
- 229D - Towers DP
- Codeforces 478D Red-Green Towers dp
- codeforces 478D Red-Green Towers dp
- codeforces 478D Red-Green Towers (dp)
- Codeforces 478D Red-Green Towers (DP)
- Codeforces 478D Red-Green Towers (DP)
- codeforces 478D D. Red-Green Towers(dp)
- codeforces 478D Red-Green Towers(dp)
- Codeforces 478D Red-Green Towers 构造+DP
- codeforces D - Red-Green Towers
- 【CODEFORCES】 D. Red-Green Towers
- D - Red-Green Towers dp
- Codeforces 484D. Kindergarten DP贪心
- Codeforces 265D Good Sequences 贪心+DP
- Codeforces Round #274(Div2) B. Towers 贪心
- 手把手教你做安豆计算器(一)-开发环境搭建与部署
- 设计师最常忽略的UI页面状态:空白状态
- 百度谷歌离线地图解决方案(离线地图下载)
- 【Shiro】Apache Shiro架构之实际运用(整合到Spring中)
- jenkins安装配置
- codeforces 229 D Towers 贪心+DP
- 研读《基于flume网络安全可视化系统》----小结
- 素材的多样性
- Mesh网格编程(二) 万能网格几何体
- Spring4 Retrofit2 整合
- 网站收藏
- Vysor:可以直接在 Chrome 中通过鼠标操作 Android 设备
- 关于使用cocoaPods,import导入时第三方库头文件没有提示问题的解决办法
- 分区格式化挂载