From 2573240c73777618248900fdf92fd3dd8dff05da Mon Sep 17 00:00:00 2001 From: Zengtudor Date: Thu, 28 Aug 2025 16:11:01 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E6=9B=B4=E6=96=B0README=E5=B9=B6?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8A=A8=E6=80=81=E8=A7=84=E5=88=92=E7=AE=97?= =?UTF-8?q?=E6=B3=95=E6=A8=A1=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加算法笔记标题到README.md 新增两个动态规划算法模板文件: - opj8782.cpp:处理数字串添加乘号的最大值问题 - P4342.cpp:处理区间合并的最大最小值问题 --- README.md | 1 + src/8/28/P4342.cpp | 31 +++++++++++++++++++++++++++++++ src/8/28/opj8782.cpp | 20 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/8/28/P4342.cpp create mode 100644 src/8/28/opj8782.cpp diff --git a/README.md b/README.md index b1d352e..fe7dae5 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,4 @@ +# 算法笔记 ## 线性动态规划优化为$O(n\log{n})$方法 >如果是递增序列就lower_bound diff --git a/src/8/28/P4342.cpp b/src/8/28/P4342.cpp new file mode 100644 index 0000000..28170a4 --- /dev/null +++ b/src/8/28/P4342.cpp @@ -0,0 +1,31 @@ +/* + +dpmax[i][j]=编号[i,j]合并后的最大值 +dpmin[i][j]=编号[i,j]合并后的最小值 + +if op[k] == + + dpmax[i][j]=max(dpmax[i][k]+dpmax[k+1][j]) + dpmin[i][j]=min(dpmin[i][k]+dpmin[k+1][j]) + +else if op[k] == * + dpmax[i][j]=max(dpmax[i][k]*dpmax[k+1][j], + dpmax[i][k]*dpmin[k+1][j], + dpmin[i][k]*dpmax[k+1][j], + dpmin[i][k]*dpmin[k+1][j]) + + dpmin[i][j]=min(dpmax[i][k]*dpmax[k+1][j], + dpmax[i][k]*dpmin[k+1][j], + dpmin[i][k]*dpmax[k+1][j], + dpmin[i][k]*dpmin[k+1][j]) + +dpmax[i][j] = -1e9 +dpmin[i][j] = 1e9 + +dp[i][i]=arr[i] + +*/ + + +int main(){ + +} \ No newline at end of file diff --git a/src/8/28/opj8782.cpp b/src/8/28/opj8782.cpp new file mode 100644 index 0000000..d0ffc25 --- /dev/null +++ b/src/8/28/opj8782.cpp @@ -0,0 +1,20 @@ +/* + +dp[i][j]=前i个数字添加j个乘号的最大值 +dp[i][j]=max( + dp[i][j], + dp[k][j-1] * num[k+1][i] +) + +num[i][i]=n[i]-'0' +num[i][j]=num[i][j-1]*10+(n[j]-'0') + +dp[i][j] = -1e9 +dp[i][0] = num[1][i] + +*/ + + +int main(){ + +}