题目链接

题目

题目描述

给定两个长度为n的整数列A和B,每次你可以从A数列的左端或右端取走一个数。假设第i次取走的数为ax,则第i次取走的数的价值vi=bi⋅ax,现在希望你求出∑vi的最大值。

输入描述

第一行一个数T,表示有T组数据。

对于每组数据,第一行一个整数n,

接下来两行分别给出A数列与B数列。

输出描述

每一组数据输出一行,最大的∑vi。

示例1

输入

2
2
1 1000
2 1
5
1 3 5 2 4
1 2 3 4 5

输出

2001
52

说明

对于第二个样例,

第一次从左边取走a1,v1=a1⋅b1=1,

第二次从左边取走a2,v2=a2⋅b2=6,

第三次从右边取走a5,v3=a5⋅b3=12,

第四次从右边取走a4,v4=a4⋅b4=8,

第五次取走剩下的a3,v5=a3⋅b5=25。

总价值∑vi=1+6+12+8+25=52

备注

\(T≤10\)

\(1≤n≤10^3\)

\(1≤a_i,b_i≤10^3\)

题解

知识点:区间dp。

这类题有个很显然的特征,即每次只能选剩余的左右两端的数,可以考虑区间dp逆推整个过程,从只剩一个数作为终点逆推回原来的数列,然后取其中过程中的最大值即可。

设 \(dp[i][j]\) 为用区间 \([i,j]\) 里的数作为第 \([n-(j-i),n]\) 个数时能够到达的最大值。有转移方程:

\[dp[i][j] = \max (dp[i + 1][j] + a[i] \cdot b[n - l + 1], dp[i][j - 1] + a[j] \cdot b[n - l + 1])
\]

表示选左端点或者右端点作为第 \(n-l+1\) 个数。

时间复杂度 \(O(n^2)\)

空间复杂度 \(O(n^2)\)

代码

#include <bits/stdc++.h>
#define ll long long using namespace std; int a[1007], b[1007], dp[1007][1007]; bool solve() {
int n;
cin >> n;
for (int i = 1;i <= n;i++) cin >> a[i];
for (int i = 1;i <= n;i++) cin >> b[i];
for (int i = 1;i <= n;i++) dp[i][i] = a[i] * b[n];
for (int l = 2;l <= n;l++) {
for (int i = 1, j = l;j <= n;i++, j++) {
dp[i][j] = max(dp[i + 1][j] + a[i] * b[n - l + 1], dp[i][j - 1] + a[j] * b[n - l + 1]);
}
}
cout << dp[1][n] << '\n';
return true;
} int main() {
std::ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int t = 1;
cin >> t;
while (t--) {
if (!solve()) cout << -1 << '\n';
}
return 0;
}

NC14701 取数游戏2的更多相关文章

  1. NOIP2007 矩阵取数游戏

    题目描述 帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的n*m的矩阵,矩阵中的每个元素aij均为非负整数.游戏规则如下: 1.每次取数时须从每行各取走一个元素,共n个.m次后取完矩阵所有元素: 2. ...

  2. 1166 矩阵取数游戏[区间dp+高精度]

    1166 矩阵取数游戏 2007年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description [ ...

  3. 矩阵取数游戏 NOIP 2007

    2016-05-31 17:26:45 题目链接: NOIP 2007 矩阵取数游戏(Codevs) 题目大意: 给定一个矩阵,每次在每一行的行首或者行尾取一个数乘上2^次数,求取完最多获得的分数 解 ...

  4. 洛谷 P1005 矩阵取数游戏

    题目描述 帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的n*m的矩阵,矩阵中的每个元素aij均为非负整数.游戏规则如下: 1.每次取数时须从每行各取走一个元素,共n个.m次后取完矩阵所有元素: 2. ...

  5. COJ 0501 取数游戏(TPM)

    取数游戏(TPM) 难度级别:D: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 给你一个n*n的格子的棋盘,每个格子里面有一个非负数.从中取 ...

  6. BZOJ1978: [BeiJing2010]取数游戏 game

    1978: [BeiJing2010]取数游戏 game Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 650  Solved: 400[Submit] ...

  7. codevs1166 矩阵取数游戏

    题目描述 Description [问题描述] 帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的n*m 的矩阵,矩阵中的每个元素aij均 为非负整数.游戏规则如下: 1. 每次取数时须从每行各取走一个 ...

  8. BZOJ 1978: [BeiJing2010]取数游戏 game( dp )

    dp(x)表示前x个的最大值,  Max(x)表示含有因数x的dp最大值. 然后对第x个数a[x], 分解质因数然后dp(x) = max{Max(t)} + 1, t是x的因数且t>=L -- ...

  9. 矩阵取数游戏洛谷p1005

    题目描述 帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的n*m的矩阵,矩阵中的每个元素aij均为非负整数.游戏规则如下: 1.每次取数时须从每行各取走一个元素,共n个.m次后取完矩阵所有元素: 2. ...

  10. 计蒜客 取数游戏 博弈+dp

    题目链接 取数游戏 思路:dp(x, y)表示先手在区间[x, y]能取得的最大分数.当先手取完,就轮到后手去,后手一定会选择当前能令他得到最大分数的策略,其实当先手在[x, y]区间两端取走一个数, ...

随机推荐

  1. SpringBoot利用自定义注解实现多数据源

    自定义多数据源 SpringBoot利用自定义注解实现多数据源,前置知识:注解.Aop.SpringBoot整合Mybaits 1.搭建工程 创建一个SpringBoot工程,并引入依赖 <de ...

  2. WebStrom中解决中文乱码——2021050

    1.首先将IDE Encoding,Project Encoding和下面的Default Encoding for properties file设置为utf-8 2.在HTML中添加 <me ...

  3. 3 分钟了解 NVIDIA 新出的 H200

    英伟达在 2023 年全球超算大会上发布了备受瞩目的新一代 AI 芯片--H200 Tensor Core GPU.相较于上一代产品 H100,H200 在性能上实现了近一倍的提升,内存容量翻倍,带宽 ...

  4. JDBC针对SQLServer的sendStringParametersAsUnicode=false的验证

    JDBC针对SQLServer的sendStringParametersAsUnicode=false的验证 背景 部分客户的SQLServer数据库出现了大量死锁的情况. 虽然部分客户并没有反馈死锁 ...

  5. [转帖]Shell三剑客之sed

    目录 Shell三剑客 sed工具 sed 流编辑器的工作过程 sed命令格式与选项操作符 sed命令的常用选项 sed命令的打印功能 默认打印方式 sed命令的寻址打印 文本模式过滤行内容 sed的 ...

  6. [转帖]sendfile“零拷贝”、mmap内存映射、DMA

    https://www.jianshu.com/p/7863667d5fa7 KAFKA推送消息用到了sendfile,落盘技术用到了mmap,DMA贯穿其中. 先说说零拷贝 零拷贝并不是不需要拷贝, ...

  7. 【转帖】【奇技淫巧】Linux | 安全保障防火墙-iptables

    虽然说Linux在安全方面确实相当于windows要更加可靠一些,但一般使用其作为服务器的我们,也不能大意,也是需要严格限制网络传输过程中的出入规则.上篇文章我们有聊到统计网络的信息,这篇文章来学习一 ...

  8. 通过写脚本的方式自动获取JVM内的进程堆栈信息等内容

    公司转java之后 经常会遇到java进程占用CPU特别多的情况. 每次连上机器进行处理都比较慢了. 索性自己写一个脚本, 把想要查询的信息直接汇总进去. 这样的话 就简单很多了. 脚本也很简单主要如 ...

  9. 神经网络优化篇:详解超参数调试的实践:Pandas VS Caviar(Hyperparameters tuning in practice: Pandas vs. Caviar)

    超参数调试的实践 如今的深度学习已经应用到许多不同的领域,某个应用领域的超参数设定,有可能通用于另一领域,不同的应用领域出现相互交融.比如,曾经看到过计算机视觉领域中涌现的巧妙方法,比如说Confon ...

  10. 2023年第七届蓝帽杯初赛wp

    取证检材容器密码:Hpp^V@FQ6bdWYKMjX=gUPG#hHxw!j@M9 案情介绍 2021年5月,公安机关侦破了一起投资理财诈骗类案件,受害人陈昊民向公安机关报案称其在微信上认识一名昵称为 ...