题解:AT_arc116_b [ARC116B] Products of Min-Max

在题库里面乱翻,就翻到了。

因为在这道题里面子序列不需要考虑元素顺序,所以原序列无论是什么顺序都不会影响答案。

所以先把元素按照从大到小的顺序排列,然后考虑每个元素的贡献。

在当前序列中,对于元素 ai,不妨设其为最小值,并去寻找它能作为哪些序列的最小值。容易发现它作为最小值的时候只能和 1i 中的元素产生贡献。

具体的,对于当前从 1i 中选择的 aj,如果令其为最大值,那么由 aiaj 这两个值作为最值的序列元素一定都在 ji 之间,学过集合的同学都知道,这样的序列显然有 2ij1 个。

这样我们就可以得到一个 O(n2) 的解法,如下:

i=1n(ai×(j=1i(aj×2ij1)))

由于 ij1 中会出现负数,我们稍微变一下式子可以得到:

i=1n(ai×(j=1i1(aj×2ij1)+ai))

但是这样显然还不够,于是我们可以
j 的枚举进行优化。容易想到预处理。

我们用一个中间变量 sum 表示第二个括号里面的值。每次计算过答案以后,我们让 sumsum×2+ai 即可。

记得取模。

提交记录

posted @   Redamancy_Lydic  阅读(14)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示