From 3f30c144d9213d23a7fb0a31ab4b7d808bad37b3 Mon Sep 17 00:00:00 2001 From: "gitea-actions[bot]" Date: Tue, 27 Oct 2026 10:37:46 +0000 Subject: [PATCH] Sync solutions from hanyixuanten/luogu@a05c373 --- P4342.md | 9 +++++++++ _Sidebar.md | 1 + 2 files changed, 10 insertions(+) create mode 100644 P4342.md diff --git a/P4342.md b/P4342.md new file mode 100644 index 0000000..e11373b --- /dev/null +++ b/P4342.md @@ -0,0 +1,9 @@ +# P4342 [IOI 1998] Polygon 题解 + +题意:给定一个环,节点上有权值,边上有运算符 $\times$ 或 $+$,断掉一条边,按一定顺序合并相邻两个点,求最大结果以及能够达到最大结果的第一次断边选择。 + +显然第一步要破环成链,将序列复制两遍,开一个大小为 $n$ 的滑动窗口来枚举断边。 + +显然要区间 dp。最初想到用 $f_{l, r}$ 表示 $[l, r]$ 最大值,但是发现负数 $\times$ 负数可能成为新的最大值。因此考虑同时记录 $g_{l, r}$ 表示 $[l, r]$ 的最小值。随后分类讨论转移即可。 + +[code](../P4342.cpp) diff --git a/_Sidebar.md b/_Sidebar.md index 5d6786c..1103445 100644 --- a/_Sidebar.md +++ b/_Sidebar.md @@ -18,4 +18,5 @@ - [[P3199|P3199]] - [[P3205|P3205]] - [[P3572|P3572]] +- [[P4342|P4342]] - [[P6650|P6650]]