1 条题解
-
0
自动搬运
来自洛谷,原作者为

Yxa_Sheep
打表过样例,暴力出奇迹,搜索真牛逼,骗分进省一||深搜 MLE,广搜 TLE,打表 RE,退火又 CE||删掉 display 看主页||被封取关(解封后私信)||六年级蒟蒻 ,代词请用“他”||当前状态:<离线>搬运于
2025-08-24 21:17:33,当前版本为作者最后更新于2025-07-03 19:10:02,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
题意
用 天复习 个科目,每门科目的复习时间连续。第 门科目从第 天复习到第 天的收益为 ,求最大总收益。
思路
算法标签都挂着 DP,那我们当然得用了:
- 用 表示复习到第 天选择 门科目的最大收益。
- 首先考虑特殊情况, 或者 时 。
- 接着考虑普通情况,如果第 天选 门科目( 嘛),那么 ( 是从题目中那个 中分解出来的,乘法分配律嘛),如果 天选 个科目,那么第 天就是第一个选第 个科目的,那么 。
代码
#include <bits/stdc++.h> using namespace std; int t, n, m, a[2010], b[2010], f[2010][2010]; int main() { scanf("%d", &t); while (t--) { scanf("%d%d", &n, &m); for (int i = 1; i <= n; i++) scanf("%d", &a[i]); for (int i = 1; i <= m; i++) scanf("%d", &b[i]); memset(f, -0x3f, sizeof(f)), f[0][0] = 0; for (int i = 1; i <= n; i++) for (int j = 1; j <= m; j++) f[i][j] = max(f[i - 1][j], f[i - 1][j - 1]) + a[i] * b[j]; printf("%d\n", f[n][m]); } return 0; }题解来之不易,且看且珍惜。给个赞再走吧。
- 1
信息
- ID
- 11549
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 3
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者