题目
题目原文请移步下面的链接
- https://www.luogu.com.cn/problem/CF987C
- https://www.luogu.com.cn/problem/solution/CF987C
- 标签:
OI、Codeforces、动态规划、区间DP
题解
过程
-
动态规划题目重要推导状态迁移方程,推导出方程,代码就好些了;
-
坑点在下面,第一次我开的太小,大数据量时直接爆
-1分支,后来改成下面这样就AC了。const LL INF = 0x7f7f7f7f7f7f7f; -
灵异事件:用万能头文件竟然提交失败,害我折腾了几分钟。
代码
#include <vector>
#include <iostream>
using namespace std;
#define endl '\n';
typedef long long LL;
const LL INF = 0x7f7f7f7f7f7f7f;
void best_coder() {
LL solve = INF;
int n;
scanf("%d", &n);
vector<vector<LL>> dp(n, vector<LL>(3, INF));
vector<LL> s(n);
vector<LL> c(n);
for (int i = 0; i < n; ++i) {
scanf("%d", &s[i]);
}
for (int i = 0; i < n; ++i) {
scanf("%d", &c[i]);
}
for (int i = 0; i < n; ++i) {
dp[i][0] = c[i];
for (int k = 1; k < 3; ++k) {
for (int j = 0; j < i; ++j) {
if (s[j] < s[i]) {
dp[i][k] = min(dp[i][k], dp[j][k - 1] + c[i]);
}
}
}
ans = min(solve, dp[i][2]);
}
if (solve == INF) {
printf("%d\n", -1);
} else {
printf("%lld\n", solve);
}
}
void happy_coder() {
}
int main() {
// 提升cin、cout效率
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
// 小码匠
best_coder();
// 最优解
// happy_coder();
// 返回
return 0;
}
文章描述了一个关于动态规划的编程问题,题目链接指向Luogu平台。作者分享了题目的解题思路,特别是状态迁移方程的推导,以及在实现代码时遇到的大数据量处理问题和解决方法。代码中展示了如何使用动态规划求解问题,并给出了最终的答案计算部分。
113

被折叠的 条评论
为什么被折叠?



