题解:P17078 夏日甜点

前言

原来是喜欢出背景题的出题组,着实有点意思。

分析

关键结论:任意区间的最高评价都等于该区间所有风味值之和,因此答案就是整个序列的总和,与如何划分以 k k k 无关。

设区间长度为 m m m,最大风味值为 M = max ⁡ l ≤ i ≤ r a i . M=\max_{l\le i\le r}a_i. M=maxl≤i≤rai.。

选择值为 M M M 的甜点作为主打,则因为 a i ≤ M a_i\le M ai≤M:

w p = m M − ∑ i = l r ∣ a i − M ∣ = m M − ∑ i = l r ( M − a i ) = ∑ i = l r a i . \begin{aligned} w_p &=mM-\sum_{i=l}^{r}|a_i-M|\\ &=mM-\sum_{i=l}^{r}(M-a_i)\\ &=\sum_{i=l}^{r}a_i. \end{aligned} wp=mM−i=l∑r∣ai−M∣=mM−i=l∑r(M−ai)=i=l∑rai.

另一方面,对任意选择的主打值 x = a p x=a_p x=ap,单个 a i a_i ai 的贡献为

x − ∣ a i − x ∣ ≤ a i , x-|a_i-x|\le a_i, x−∣ai−x∣≤ai,

所以

w p = ∑ i = l r ( x − ∣ a i − x ∣ ) ≤ ∑ i = l r a i . w_p=\sum_{i=l}^{r}\left(x-|a_i-x|\right) \le \sum_{i=l}^{r}a_i. wp=∑i=lr(x−∣ai−x∣)≤∑i=lrai.

因此:

f ( l , r ) = ∑ i = l r a i f(l,r)=\sum_{i=l}^{r}a_i f(l,r)=∑i=lrai

无论划分成哪 (k) 个连续非空区间,总评价都是

∑ j = 1 k f ( l j , r j ) = ∑ i = 1 n a i . \sum_{j=1}^{k}f(l_j,r_j)=\sum_{i=1}^{n}a_i. ∑j=1kf(lj,rj)=∑i=1nai.

说白了就是直接求和即可得到答案,也算是比较水的一道签到题了。

相关推荐
晓梦林12 小时前
BUUCTF-菜刀流量-MISC-学习笔记
笔记·学习
charliejohn12 小时前
计算机考研 408 数据结构 图论-关键路径
数据结构·图论
非优秀程序员21 小时前
第05章 播放器大战,暴风、快播与那一夜|《互联网产品恩仇录》
算法
Godspeed Zhao21 小时前
从零开始学AI25——无监督学习之层次聚类
学习·机器学习·聚类
武子康1 天前
驾驶轨迹换个坐标,就能给移动机器人用吗?
人工智能·算法·机器学习
David猪大卫1 天前
【C++修炼】map 和 set 的使用
c语言·开发语言·数据结构·c++·经验分享·笔记·学习
HPtiger1 天前
C++ 入门笔记:从 C 到 C++ 的核心过渡(命名空间、输入输出、缺省参数、重载、引用、内联)
c语言·c++·学习
fengci.1 天前
CTF2MISC中等部分
开发语言·前端·学习
努力努力再努力wz1 天前
【Lua 进阶系列】从 C++ 对象到 Lua 变量:一文理解 userdata、Lua 栈与元表绑定机制
c++·junit·lua