hdu 6024 Building Shops 【递归+记忆存储】
来源:互联网 发布:java线程工作原理 编辑:程序博客网 时间:2024/06/03 17:44
hdu 6024 Building Shops 【递归+记忆存储】
题意:
有 N 个教学楼,在每个教学楼里学习的学生只会到其左边第一个有小卖铺的教学楼买东西,两个教学楼之间的花费为其距离之差。
由以上规则第一个教学楼的小卖铺是必须建设的。
现给出在每个教学楼建小卖铺的话费,问如何建设小卖铺才能使总体花费最小,输出最小花费。
#include <stdio.h>#include <bits/stdc++.h>typedef long long ll;using namespace std;int n;ll dp[3005][3005];bool flag[3005][3005];class A{public:ll id,cost;}; A s[3005];int cmp(A a,A b){return a.id<b.id;}ll dfs(int x,int id,ll cost){if(flag[x][id]) return dp[x][id]+cost;if(x==n+1) return cost;ll p1=dfs(x+1,x,cost+s[x].cost); //建小卖部 ll p2=p1;if(s[x].cost>s[x].id-s[id].id ) //优化 花费>距离 可以建 p2=dfs(x+1,id,cost+s[x].id-s[id].id);dp[x][id]=min(p1,p2)-cost; flag[x][id]=1;return dp[x][id]+cost;}int main(){while(cin>>n){memset(dp,0,sizeof(dp));memset(flag,0,sizeof(flag));for(int i=1;i<=n;i++){cin>>s[i].id>>s[i].cost;}sort(s+1,s+n+1,cmp);ll ans=dfs(2,1,s[1].cost);cout<<ans<<endl;}return 0;}
0 0
- hdu 6024 Building Shops 【递归+记忆存储】
- HDU 6024 Building Shops
- HDU 6024 Building Shops[dp]
- hdu 6024 Building Shops (dp)
- HDU 6024 Building Shops【DP】
- HDU 6024 Building Shops(DP)
- HDU 6024 Building Shops(DP)
- hdu 6024 Building Shops dp
- 递推-hdu-6024-Building Shops
- hdu 6024 Building Shops (DP)
- HDU 6024 Building Shops (DP)
- HDU 6024 Building Shops DP 提升
- HDU 6024 Building Shops(DP)
- HDU 6024 Building Shops (简单dp)
- HDU—6024(Building Shops)
- Building Shops HDU
- 2017CCPC女生赛 hdu 6024 Building Shops
- Building Shops
- BZOJ 1257 同除等价类 + 等比数列
- Eclipse下新建一个tld文件
- 安装Scipy
- 打印杨辉三角
- Retinex图像增强算法(SSR, MSR, MSRCR)详解及其OpenCV源码
- hdu 6024 Building Shops 【递归+记忆存储】
- 利用puppet实现自动化运维
- 委托适配
- ConcurrentLinkedQueue详解
- 遗传算法
- MapReduce编程模型
- Skia绘制代码分析
- 多线程辅助类之CyclicBarrier(四)
- 更改EclipseEE下Tomcat的部署目录