记忆化搜索专题--nkoj3699送比萨
来源:互联网 发布:php数组打印 编辑:程序博客网 时间:2024/04/28 15:29
P3699送披萨时间限制 : - MS 空间限制 : 65536 KB 评测说明 : 时限2000ms
问题描述
何老板开了一家披萨店,有一天突然收到了n个客户的订单。
何老板所在的城市只有一条笔直的大街,我们可以将它想象成数轴,其中位置0是何老板的披萨店,第i个客户所在的位置为Pi,每个客户的位置都不同。如果何老板给第i个客户送披萨,客户会支付Ei-Ti块钱,其中Ti是何老板到达他家的时刻。当然,如果到得太晚,会使得Ei-Ti<0,这时,何老板可以选择不给他送餐,免得他反过来找何老板要钱。
何老板店里面只有一个送餐车(单位时间行驶单位长度的距离),因此只能往返送餐,如下图所示就是一条线路,图中第一行的数字是位置Pi,第二行是Ei。
你的任务是帮助何老板计算出最大的收益。
输入格式
第一行,一个整数n
第二行,n个空格间隔的整数,从左往右给出了每个客户的位置Pi,即P1,P2,......,Pn
第三行,n个空格间隔的整数,从左往右给出了每个客户对应的Ei,即E1,E2,......,En
输出格式
一行,一个整数,表示所求的最佳收益
样例输入 1
5
-6 -3 -1 2 5
27 10 2 5 20
样例输出 1
32
样例输入 2
6
1 2 4 7 11 14
3 6 2 5 18 10
样例输出 2
13
样例输入 3
11
-14 -13 -12 -11 -10 1 2 3 4 5 100
200 200 200 200 200 200 200 200 200 200 200
样例输出 3
1937
提示
1 ≤ n ≤ 100
-100,000 ≤ Pi ≤ 100,000 且Pi!=0
0< Ei ≤ 100,000
#include<cstdio>#include<iostream>#include<algorithm>#include<cstdlib>#include<cstring>using namespace std;int f[205][205][205][2];bool mark[205][205][205][2];int n;int pos[205],e[205],start;int dp(int l,int r,int cnt,int p){int i;if(mark[l][r][cnt][p])return f[l][r][cnt][p];mark[l][r][cnt][p]=true;if(cnt==0)return f[l][r][cnt][p]=0;if(p==0){for(i=1;i<l;i++){f[l][r][cnt][p]=max(f[l][r][cnt][p],dp(i,r,cnt-1,0)+e[i]-cnt*abs(pos[l]-pos[i]));}for(i=r+1;i<=n+1;i++){f[l][r][cnt][p]=max(f[l][r][cnt][p],dp(l,i,cnt-1,1)+e[i]-cnt*abs(pos[l]-pos[i]));}}else{for(i=1;i<l;i++){f[l][r][cnt][p]=max(f[l][r][cnt][p],dp(i,r,cnt-1,0)+e[i]-cnt*abs(pos[r]-pos[i]));}for(i=r+1;i<=n+1;i++){f[l][r][cnt][p]=max(f[l][r][cnt][p],dp(l,i,cnt-1,1)+e[i]-cnt*abs(pos[r]-pos[i]));}}return f[l][r][cnt][p];}int main(){int i,j,ans=0;start=0;cin>>n;for(i=1;i<=n+1;i++){cin>>pos[i];if(pos[i]>0&&start==0){start=i;pos[i+1]=pos[i];pos[i]=0;i++;}}for(i=1;i<=n+1;i++){cin>>e[i];if(start==i){e[i+1]=e[i];e[i]=0;i++;}}for(i=0;i<=n;i++){ans=max(ans,dp(start,start,i,0));}cout<<ans;}
0 0
- 记忆化搜索专题--nkoj3699送比萨
- 记忆化搜索专题
- 记忆化搜索专题
- 记忆化搜索专题--nkoj2087着色方案
- 记忆化搜索专题--nkoj3698方块消除
- 记忆化搜索专题--nkoj3748玩具取名
- 几道记忆化搜索专题(ackerman 滑雪 恶魔城)
- 记忆化搜索专题--nkoj3749斐波拉契表示法
- 记忆化搜索例题
- PKU1088---记忆化搜索
- PKU1088 记忆化搜索
- HDU1078 记忆化搜索
- HDU1501 记忆化搜索
- HDU1978 记忆化搜索
- poj1661 记忆化搜索
- zoj1107记忆化搜索
- poj1191(记忆化搜索)
- 滑雪 记忆化搜索
- servlet的数据库操作风格
- Android 图片Drawable类型之Level List
- AsyncTask的使用
- c#结构体-多态复习(1)
- java邮件发送
- 记忆化搜索专题--nkoj3699送比萨
- Spring Assert(方法入参检测工具类-断言)
- JSP面试常见问题
- 接口,虚函数,抽象类的理解
- 【Linux开发】Linux动态链接库搜索路径问题
- 阅读器之响应式布局(扩展知识)
- 53.Reverse Words in a String-翻转字符串(容易题)
- 温故知新-加载器学习笔记
- C++ STL底层实现快速查阅