题意:

思路:

 #include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <map>
using namespace std; const int N = , INF = -0x3f3f3f3f;
int n, m, ans[N], v[N], a[N], last[N][N], f[N][N][N], g[N][N][N];
map<int, int> hash; inline void upt(int &x, const int &y) {
if (x < y) x = y;
} char ch;
inline int read() {
int res = , sgn = ;
while (ch = getchar(), ch < '' || ch > '') if (ch == '-') break;
ch == '-' ? sgn = : res = ch - ;
while (ch = getchar(), ch >= '' && ch <= '') res = res * + ch - ;
return sgn == ? res : -res;
} int main() {
freopen("sequence.in", "r", stdin);
freopen("sequence.out", "w", stdout); n = read();
for (int i = ; i <= n; ++i) v[i] = read();
for (int i = ; i <= n; ++i) {
a[i] = read();
if (hash[a[i]] == ) hash[a[i]] = ++m;
}
for (int i = ; i <= n; ++i) {
for (int j = ; j <= m; ++j) last[i][j] = last[i - ][j];
last[i][hash[a[i]]] = i;
}
memset(f, INF, sizeof(f));
memset(g, INF, sizeof(g));
for (int i = ; i <= n; ++i) {
for (int j = ; j <= n; ++j)
if (i + j <= n)
f[i][i][j] = g[i][i][j] = v[j + ];
else break;
f[i][i - ][] = g[i][i - ][] = ;
}
for (int l = ; l <= n; ++l)
for (int i = ; i <= n; ++i) {
int j = i + l;
if (j > n) break;
for (int k = ; k <= n; ++k) {
if (j + k > n) break;
upt(f[i][j][k], f[i][j - ][] + v[k + ]);
upt(g[i][j][k], f[i][j - ][] + v[k + ]);
int p = hash[a[j] + ], q = hash[a[j] - ];
for (int h = last[j][p]; h >= i; h = last[h - ][p])
upt(f[i][j][k], f[i][h][k + ] + f[h + ][j - ][]);
for (int h = last[j][q]; h >= i; h = last[h - ][q]) {
upt(f[i][j][k], g[i][h][k + ] + f[h + ][j - ][]);
upt(g[i][j][k], g[i][h][k + ] + f[h + ][j - ][]);
}
}
}
ans[] = ;
for (int i = ; i <= n; ++i) {
upt(ans[i], ans[i - ]);
for (int j = ; j < i; ++j)
upt(ans[i], ans[j] + f[j + ][i][]);
}
printf("%d\n", ans[n]);
return ;
}

【ZJOI2017 Round1练习】D8T2 sequence(DP)的更多相关文章

  1. 【ZJOI2017 Round1练习&BZOJ4767】D1T3 两双手(排列组合,DP)

    题意: 100%的数据:|Ax|,|Ay|,|Bx|,|By| <= 500, 0 <= n,Ex,Ey <= 500 思路:听说这是一道原题 只能往右或者下走一步且有禁止点的简化版 ...

  2. 【ZJOI2017 Round1练习】D4T2 trie(贪心,状压DP)

    题意:现在 Matej 手上有 N 个英文小写字母组成的单词, 他想知道,如果将这 N 个单词中的字母分别进行重新排列,形成的字母树的节点数最少是多少. n<=16,len[i]<=100 ...

  3. 【ZJOI2017 Round1练习&BZOJ4774】D3T2 road(斯坦纳树,状压DP)

    题意: 对于边带权的无向图 G = (V, E),请选择一些边, 使得1<=i<=d,i号节点和 n − i + 1 号节点可以通过选中的边连通, 最小化选中的所有边的权值和. d< ...

  4. 【ZJOI2017 Round1练习&BZOJ5354】D7T3 room(DP)

    题意: 思路: 写了两种版本 考场版本 ..,..]of longint; t:..,..]of longint; n,m,i,j,k,oo,ans,d1:longint; function min( ...

  5. 【ZJOI2017 Round1练习&BZOJ5350】D5T1 masodik(DP,斜率优化)

    题意:你要从(0,0)点走到(n,m), 每次只能往 x 轴或者 y 轴正方向移动一个单位距离.从(i,j)移动到(i,j+1)的代价为 ri,从(i,j)移动到(i+1,j)的代价为 cj. 求最小 ...

  6. 【ZJOI2017 Round1练习&UVA1057】D6T1 Routing(DP,SPFA)

    题意:给你一个有向图, 并指定起点和终点. 问要从起点走向终点, 再从终点走向起点, 最少需要走过多少不同的节点. 对于 100%的数据, 有 N<=100, M<=min(1000,N* ...

  7. [poj3017] Cut the Sequence (DP + 单调队列优化 + 平衡树优化)

    DP + 单调队列优化 + 平衡树 好题 Description Given an integer sequence { an } of length N, you are to cut the se ...

  8. Codeforces Round #277 (Div. 2) E. LIS of Sequence DP

    E. LIS of Sequence Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/486/pr ...

  9. hdu6078 Wavel Sequence dp+二维树状数组

    //#pragma comment(linker, "/STACK:102400000,102400000") /** 题目:hdu6078 Wavel Sequence 链接:h ...

随机推荐

  1. Uediter的引用和取值

    页面应用Uediter控件,代码如下: <tr> <td align="center" class="xwnr_j"> <asp: ...

  2. AJPFX关于增强for的概述和使用(foreach)

    增强for的概述和使用(foreach)1.增强for的概述和使用(foreach)                格式:                for(数组或者Collection集合中元素 ...

  3. [BZOJ1025][SCOI2009]游戏 DP+置换群

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1025 题目中的排数就是多少次回到原来的序列.很显然对于题目所描述的任意一种对应法则,其中一 ...

  4. CentOS 7 下配置 firewalld(firewall-cmd)实现 NAT 转发 软路由

    如果配合 DHCP 服务或实现更多功能. ☼ NAT 转发软路由 开启 NAT 转发之后,只要本机可以上网,不论是单网卡还是多网卡,局域网内的其他机器可以将默认网关设置为已开启 NAT 转发的服务器 ...

  5. Wamp搭建的服务器登录的时候出现Access denied for user 'hello'@'localhost' (using password: YES)

    想用自己电脑做一个服务器,然后就选择了Wamp,本来一切顺利,可是到登录的时候却出现了问题,出现了 Access denied for user 'hello'@'localhost' (using ...

  6. mysql中int(1)与int(10)的区别

    INT[(M)] [UNSIGNED] [ZEROFILL] 普通大小的整数.带符号的范围是-2147483648到2147483647.无符号的范围是0到4294967295. INT(1) 和 I ...

  7. php高效率对一维数组进行去重

    $input = array("a" => "green", "red", "b" => "gre ...

  8. provider模式

    最近看代码有所感想吧.当底层API,发生变化时,可以使用Provider模式.既然是模式就一定的股则. 1.该模式对原有接口的封装. 2.该模式实现对API的封装,不显示细节,从而取消依赖关系. 3. ...

  9. SQL Server调试存储过程

      一.   调试SQL   Server   2000 1.   设置帐户. <1>   在windows服务中找到MSSQLSERVER,双击弹出对话框. <2>   选择 ...

  10. PostgreSQL执行机制的初步学习

    作为开源数据库的新手,近日有兴对比了Pg和MySQL的查询计划. 通过Pg源码目录下的src\backend\executor\README文件,加上一些简单调试,就能对Pg的执行机制产生一个初步印象 ...