[区间DP] POJ 3186
来源:互联网 发布:练六级英语听力的软件 编辑:程序博客网 时间:2024/05/22 03:30
题意
n个数在一个双端队列中,每次从队首或队尾出。出的第n个数乘以n,最后加起来,求最大和。
思路
第一次区间dp
dp[i][j] 代表从i取到j的最大总数
dp[i][j] = max(dp[i+1][j]+a[i](n+i-j) , dp[i][j-1]+a[j](n+i-j));
代码
#include <algorithm>#include <cstdio>#include <iostream>#define N 2200#define INF 0x7f7f7f7fusing namespace std;int val[ N ];int dp[ N ][ N ];int main () { int n; while ( ~scanf ( "%d", &n ) ) { for ( int i = 0; i < n; ++i ) { scanf ( "%d", &val[ i ] ); //从最后一个 ( 第n天 )往前取,直到取完所有 // dp[ i ][ i ] = val[ i ] * n; } //从区间长度为1开始一直到n for ( int len = 0; len < n; ++len ) //从i开始 for ( int i = 0; i + len < n; ++i ) { int l = i, r = i + len; dp[ l ][ r ] = max ( dp[ l + 1 ][ r ] + val[ l ] * ( n + l - r ), dp[ l ][ r - 1 ] + val[ r ] * ( n + l - r ) ); } printf ( "%d\n", dp[ 0 ][ n - 1 ] ); } return 0;}
阅读全文
0 0
- poj 3186区间dp
- 区间dp POJ 3186
- [区间DP] POJ 3186
- poj 3056 区间dp
- poj 2955 区间DP
- Poj 3377 区间DP
- POJ 1651区间DP
- poj 2955(区间DP)
- POJ 2955 区间dp
- poj 1651 区间DP
- POJ 2955 区间DP
- POJ 2955 区间DP
- poj 2955 区间dp
- POJ 1179 区间DP
- POJ 3280 区间DP
- POJ 1141 区间DP
- Brackets+POJ+区间dp
- poj 3280 区间dp
- 《程序员》:唯品会双11大促技术保障实践 为什么耗资数亿的12306一直都非常难用? 96年美女拿下了刘强东的猪脸识别冠军,30万奖金到手! 2017 科技大事件回顾:智能音箱大战、数据泄露于
- ubuntu安装好matlab后键盘复制粘贴快捷键不能使用 解决办法
- FTI FormingSuite 2018 官方版下载附安装教程
- spring配置bean的细节二
- Tensorflow实例:实现GAN(生成对抗网)
- [区间DP] POJ 3186
- AES过程
- Python之旅
- 数据结构->二叉树的基本操作
- 斯坦福大学Tensorflow与深度学习实战课程
- 51nod 1172 Partial Sums V2 任意模数FFT
- 高级用法
- 程序员偷偷深爱的9个不良编程习惯
- python随机数