前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >陕西师范大学第七届程序设计竞赛网络同步赛 iko和她的糖

陕西师范大学第七届程序设计竞赛网络同步赛 iko和她的糖

作者头像
用户2965768
发布2018-08-30 16:27:54
3040
发布2018-08-30 16:27:54
举报
文章被收录于专栏:wymwym

题目链接

考虑所有情况,求全局最优解,也就是答案。

dp[i][j]表示到达第i处选择了j次补给

#include<iostream>

#include<cstring>

using namespace std;

int dp[1234][5],a[1234],b[1234];

int main()

{

int n;

cin>>n;

for(int i=1;i<=n;i++) cin>>a[i];

for(int i=1;i<n;i++) cin>>b[i];

memset(dp,-1,sizeof(dp));

dp[1][0]=dp[0][0]=0;

b[0]=0;

for(int i=1;i<=n;i++)

{

for(int j=1;j<=3;j++)

{

if(dp[i-1][j]>=b[i-1])

dp[i][j]=max(dp[i][j],dp[i-1][j]-b[i-1]);

if(dp[i-1][j-1]>=b[i-1])

dp[i][j]=max(dp[i][j],dp[i-1][j-1]-b[i-1]+a[i]);

}

}

cout<<dp[n][3]<<endl;

return 0;

}

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年05月13日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档