Codeforces 358D. Dima and Hares (DP)
来源:互联网 发布:矩阵diag是什么意思 编辑:程序博客网 时间:2024/06/06 07:34
题目描述
传送门
题目大意:对于每个位置的数,如果选他的时候左右两边的数都没选可得到a[i],两边已经选中了一个可以得到b[i],两边的数都选了可以得到c[i]。
第一个位置和第n个位置不能得到价值c,确定选取的顺序是价值和最大。
题解
假设在l,r放入得到两个位置的价值a,那么[l-1,r+1]中一定存在一种选取方式使其中只有一个数取c,剩下的都取b。
那么我们可以用f[i]表示到第i个且第i位一定选a的最大价值,然后枚举上一个选a的位置转移即可。
代码
#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#define N 3003using namespace std;int n,sum[N][N],f[N],mx[N][N],a[N],b[N],c[N];int main(){ freopen("a.in","r",stdin); scanf("%d",&n); for (int i=1;i<=n;i++) scanf("%d",&a[i]); for (int i=1;i<=n;i++) scanf("%d",&b[i]); for (int i=1;i<=n;i++) scanf("%d",&c[i]); for (int i=1;i<=n;i++) { mx[i][i-1]=-1000000000; for (int j=i;j<=n;j++) { sum[i][j]=sum[i][j-1]+b[j]; if (j!=1&&j!=n) mx[i][j]=max(mx[i][j-1],c[j]-b[j]); } } f[1]=a[1]; for (int i=2;i<=n;i++) for (int j=0;j<i-1;j++) if (j) f[i]=max(f[i],f[j]+sum[j+1][i-1]+mx[j+1][i-1]+a[i]); else f[i]=max(f[i],f[j]+sum[j+1][i-1]+a[i]); int ans=0; for (int i=1;i<=n;i++) ans=max(ans,f[i]+sum[i+1][n]); printf("%d\n",ans);}
阅读全文
0 0
- Codeforces 358D Dima and Hares【dp】
- Codeforces 358D Dima And Hares DP
- Codeforces 358D. Dima and Hares (DP)
- codeforces 358D D. Dima and Hares(dp)
- codeforces 358D D. Dima and Hares(dp)
- Codeforces 358 D. Dima and Hares
- CF 358 D Dima and Hares(dp)
- D. Dima and Hares----dp
- Codeforces 208 div2 D. Dima and Hares
- Codeforces Round #208 (Div. 2) D. Dima and Hares
- Codeforces Round #208 (Div. 2)D. Dima and Hares
- CF-358D-Dima and Hares【T^T+*^*】
- Codeforces 584D Dima and Lisa(数论)
- CodeForces - 584D Dima and Lisa (素数拆分,暴力)
- CodeForces - 366C Dima and Salad (DP&01背包)
- CodeForces 366D Dima and Trap Graph
- Codeforces 400 D. Dima and Bacteria
- CodeForces 400D Dima and Bacteria
- 【Wayland】初识Wayland(X、Mir)
- 面试准备总结
- Python实战(一)
- 配置wamp时候遇到的各种问题
- Apache kafka 工作原理介绍
- Codeforces 358D. Dima and Hares (DP)
- 1010: [HNOI2008]玩具装箱toy 斜率优化
- 使用atom工具
- Visual C++ 本地多核编程
- intellij ideal连接自己的仓库地址,并提交代码
- 进一步解析“Hello World”程序
- 线程互斥与同步(part2)—互斥锁(Mutex)的“cp”:条件变量(Condition Variable)
- POJ 2955 Brackets——区间dp
- CPU百分百问题的研究