#P16235. [2026保加利亚国家扩展队训练赛]Jelly果冻合并

[2026保加利亚国家扩展队训练赛]Jelly果冻合并

题目描述

作为一名真正的邪恶科学家,你已经熟练掌握了制造越来越巨大、越来越可怕的果冻的方法。

实验室中央的一张圆桌上摆放着 NN 个矩形果冻,它们构成一个环形数组。也就是说,除了通常意义下相邻的果冻外,第一个果冻与最后一个果冻也互相相邻。

每个果冻由两个正整数描述:高度和宽度。

任意时刻,你可以选择两个相邻的果冻,将它们合并为一个新果冻。新果冻的:

  • 高度等于两个原果冻高度的较大值;
  • 宽度等于两个原果冻宽度的较大值。

新果冻占据原来两个果冻的位置,圆桌上的果冻数量减少 11。之后,它也可以继续与相邻果冻合并。

高度为 hh、宽度为 ww 的果冻面积为 hwh\cdot w

你可以执行任意次合并,也可以一次都不合并。请最大化最终剩余果冻的面积之和。

实现要求

你需要实现函数:

long long solve(std::vector<int> H,
                std::vector<int> W);

其中:

  • HW 的长度均为 NN
  • HiH_iWiW_i 分别表示第 ii 个果冻的高度和宽度;
  • 果冻按照它们在圆桌上的环形顺序给出;
  • 函数应返回经过任意次合并后,可以得到的最大面积总和。

数据范围

  • 1N31051\le N\le 3\cdot 10^5
  • 1Hi,Wi1061\le H_i,W_i\le 10^6

答案可能超过 32 位有符号整数范围。

子任务

子任务 分值 依赖子任务 额外限制
0 - 样例
1 10 0 N20N\le 20
2 12 0-1 N500N\le 500
3 15 0-2 N4000N\le 4000
4 8 - 所有果冻宽度相同,或所有果冻高度相同
5 20 H1H2HNH_1\le H_2\le\cdots\le H_NW1W2WNW_1\ge W_2\ge\cdots\ge W_N
6 35 0-5 无额外限制

样例

样例 1

输入:
2
6 3
2 7

输出:
42

不合并时总面积为:

63+27=32.6\cdot 3+2\cdot 7=32.

合并后得到一个 6×76\times 7 的果冻,面积为 4242

样例 2

输入:
4
1 5
10 10
5 1
6 7

输出:
152

样例 3

输入:
5
6 2
5 1
1 5
2 7
1 2

输出:
67

一种最优方案是把环分成两段:

  • 果冻 4,5,14,5,1 合并,得到 6×76\times 7,面积为 4242
  • 果冻 2,32,3 合并,得到 5×55\times 5,面积为 2525

总面积为 42+25=6742+25=67

样例 4

输入:
1
380385 222650

输出:
84692720250

只有一个果冻,答案就是:

380385222650=84692720250.380385\cdot 222650=84\,692\,720\,250.

本地评测器格式

本地评测器读取:

N
H1 W1
H2 W2
...
HN WN

并输出 solve 的返回值。