P9461 「EZEC-14」众数 II
P9461 「EZEC-14」众数 II
题意
略。
思路
发现如果区间包含的 \(a_i\) 都是完整的,那么最小众数一定是 \(1\)。
否则如果 \(a_l\) 只有一段后缀 \([x,a_l]\) 和 \(a_r\) 只有一段前缀 \([1,y]\),当且仅当 \(\forall i \in [l,r], a_i \ge x\) 时最小众数是 \(x\),否则还是 \(1\)。
没有其他情况。
为了方便,我们转为求出所有最小众数为 \(x(x>1)\) 的子区间,贡献 \(x-1\)。
然后所有子区间再贡献一个 \(1\)。这部分显然是好求的。
\(\forall i \in [l,r], a_i \ge x\) 这个条件,让我们想到小根笛卡尔树。
对于笛卡尔树上一个节点 \(u\),在它的左子树取一个 \(l\),右子树取一个 \(r\),计算贡献。显然这样的子区间最小众数为 \(x \in [1,a_u]\)。
这里最小众数为 \(x\) 的时候有几个子区间?
左端点可以取左子树上任意一个点或者点 \(u\) 的高度 \(x\) 的位置,有 \(siz_{ls} +1\) 种方案。
右端点可以取右子树上任意一个点或者点 \(u\) 的高度 \(\ge x\) 的位置,有 \((sum_{rs}+a_u) - (x-1)(siz_{rs}+1)\) 种方案。
每个方案的贡献是 \(x-1\)。
所以 \(u\) 的子树的总贡献是:
\]
化简一下,变成:
& (siz_{ls}+1) \sum_{x=1}^{a_u} (sum_{rs}+a_u) (x-1) -(siz_{rs}+1)(x-1)^2 \\
= & (siz_{ls}+1) ((sum_{rs}+a_u) (\sum_{x=1}^{a_u-1} x) - (siz_{rs}+1) (\sum_{x=1}^{a_u-1} x^2)) \\
= & (siz_{ls}+1) ((sum_{rs}+a_u)\frac{a_u(a_u-1)}2 - (siz_{rs}+1) \frac{(a_u-1)a_u(2a_u-1)}{6})
\end{aligned}
\]
是不是做完了。
可以线性做,但是单 \(\log\) 可以少写点东西。
code
#include<bits/stdc++.h>
#define sf scanf
#define pf printf
#define rep(x,y,z) for(int x=y;x<=z;x++)
#define per(x,y,z) for(int x=y;x>=z;x--)
using namespace std;
typedef long long ll;
namespace wing_heart {
constexpr int N=1e6+7,mod=998244353,V=1e6;
struct modint {
int x;
modint (int y=0) : x(y) {}
modint operator + (modint b) const { return x+b.x<mod ? x+b.x : x+b.x-mod; }
modint operator - (modint b) const { return x-b.x<0 ? x-b.x+mod : x-b.x; }
modint operator * (modint b) const { return 1ll*x*b.x%mod; }
modint &operator += (modint b) { return *this = *this + b; }
modint &operator *= (modint b) { return *this = *this * b; }
};
int n,a[N];
int tr[N];
void add(int x,int w) {
for(;x<=V;x+=x&-x) tr[x]=max(tr[x],w);
}
int ask(int x) {
int s=0;
for(;x;x-=x&-x) s=max(s,tr[x]);
return s;
}
modint b[N];
int lt[N],rt[N];
modint ans;
void main() {
sf("%d",&n);
rep(i,1,n) sf("%d",&a[i]), b[i]=b[i-1]+a[i];
rep(i,1,n) {
lt[i]=ask(a[i])+1;
add(a[i],i);
}
memset(tr,0,sizeof(tr));
per(i,n,1) {
rt[i]=n-ask(a[i]-1);
add(a[i],n-i+1);
}
// rep(i,1,n) pf("%d %d\n",lt[i],rt[i]);
rep(i,1,n) ans+=((b[rt[i]]-b[i-1])*(1ll*a[i]*(a[i]-1)/2%mod)-(modint)(rt[i]-i+1)*(1ll*(a[i]-1)*a[i]*(2*a[i]-1)/6%mod))*(i-lt[i]+1);
ans+=b[n]+(1ll*b[n].x*(b[n].x-1)/2%mod);
pf("%d\n",ans.x);
}
}
int main() {
#ifdef LOCAL
freopen("in.txt","r",stdin);
freopen("my.out","w",stdout);
#endif
wing_heart :: main();
}
P9461 「EZEC-14」众数 II的更多相关文章
- 从零开始单排学设计模式「策略模式」黑铁 II
阅读本文大概需要 1.7 分钟. 本篇是设计模式系列的第三篇,虽然之前也写过相应的文章,但是因为种种原因后来断掉了,而且发现之前写的内容也很渣,不够系统.所以现在打算重写,加上距离现在也有一段时间了, ...
- csp-s模拟测试「9.14」A·B·C(三分,贪心)
博客大概咕了很久了......... T1 A 大概推下式子就好了,考试时数据点分治DFS前30点T了,然后后70分因为两数相乘爆long long然后本来可以A掉,就WA零了....... 式子推出 ...
- 「10.14」小P的2048(模拟)·小P的单调数列(性质,DP)·小P的生成树(乱搞)
A. 小P的2048 模拟.....又没啥可说的,以后要认真打打模拟题了... B. 小P的单调数列 考场$n^2log(n)$的SB思路有人听吗 正解当然不是这样, 事实上我们每次选取的只有一段区间 ...
- 洛谷比赛 「EZEC」 Round 4
洛谷比赛 「EZEC」 Round 4 T1 zrmpaul Loves Array 题目描述 小 Z 有一个下标从 \(1\) 开始并且长度为 \(n\) 的序列,初始时下标为 \(i\) 位置的数 ...
- FileUpload控件「批次上传 / 多档案同时上传」的范例--以「流水号」产生「变量名称」
原文出處 http://www.dotblogs.com.tw/mis2000lab/archive/2013/08/19/multiple_fileupload_asp_net_20130819. ...
- LOJ #2026「JLOI / SHOI2016」成绩比较
很好的锻炼推柿子能力的题目 LOJ #2026 题意 有$n$个人$ m$门学科,第$ i$门的分数为不大于$U_i$的一个正整数 定义A「打爆」B当且仅当A的每门学科的分数都不低于B的该门学科的分数 ...
- Windows 10 如何使用「系统还原」功能备份系统状态和配置
https://www.sysgeek.cn/windows-10-system-restore/ 在 Windows 10 系统中,「系统还原」功能旨在创建配置快照,并在检测到系统更改时将其工作状态 ...
- Linux 小知识翻译 - 「架构 续」(arch)
上次,从「计算机的内部构造」的角度解释了架构这个术语.这次,介绍下架构中经常提到的「i386架构」及之后的「i486」,「i586」. 安装Linux的时候,很多人即使不了解但也会经常听到i386架构 ...
- NLP领域的ImageNet时代到来:词嵌入「已死」,语言模型当立
http://3g.163.com/all/article/DM995J240511AQHO.html 选自the Gradient 作者:Sebastian Ruder 机器之心编译 计算机视觉领域 ...
- 「C语言」常量和变量的表示、应用和变量命名规则
在程序运行中,其值不能改变的量成为常量. 在基本数据类型中,常量可分为整型常量.实型常量.符号常量和字符型常量(包括字符常量和字符串常量),现分别介绍如下: 目录: 一.常量 二.C语言标识符 三.变 ...
随机推荐
- vs 运行 qt 项目的注意事项
简介 RT 1 使用vs 打开 qt 项目 https://blog.csdn.net/weixin_44840658/article/details/99693803 2 运行项目之后 会因为缺少相 ...
- 从崩溃到稳定:前端开发者必学的 Node.js 守护进程实战指南
本文原创首发于公众号[我做开发那些年]与网站[乔文小屋],现同步转载至本平台,点击阅读原文 声明:如需转载本文至其他平台,请注明文章来源及公众号信息,感谢您对原创内容的尊重与支持! 说到守护进程,绝大 ...
- ETL数据集成丨通过ETLCloud工具,将Oracle数据实时同步至Doris中
ETLCloud是一个全面的数据集成平台,专注于解决大数据量和高合规要求环境下的数据集成需求.采用先进的技术架构,如微服务和全Web可视化的集成设计,为用户提供了一站式的数据处理解决方案. 主要特点和 ...
- Economic-Assets-Allocation&Management: 资产配置+管理:标准普尔家庭资产配置图:家庭理财的科学指南
Economic-Assets-Allocation&Management: 资产配置+管理: 标准普尔家庭资产配置图:家庭理财的科学指南 发表时间:2025-05-28 10:19:43 在 ...
- SciTech-OS-Linux-Device Driver: 英文原版电子书“Linux Device Drivers, Third Edition”
https://lwn.net/Kernel/LDD3/ Linux Device Drivers, Third EditionThis is the web site for the Third E ...
- Latex基本语法简记
公式插入方式 行内公式可用\(...\)或$...$ 例如$ f(x)=x^2 $,显示为 $ f(x)=x^2 $ 独立公式(单独另起一行,公式会居中),使用$$...$$或\[...\] 例如:$ ...
- vue07-router 路由
main.js vue init webpack //选择router import router from './router' new Vue({ el: '#app', router, comp ...
- 亚马逊机器学习大学推出"负责任AI"课程 - 聚焦AI偏见缓解与公平性实践
亚马逊机器学习大学推出"负责任AI"课程 亚马逊机器学习大学(MLU)最新发布"负责任AI--偏见缓解与公平性标准"课程.这个免费的在线公开课程教授负责任AI的 ...
- CF778A String Game (二分答案)
codeforces链接:https://codeforces.com/problemset/problem/778/A CF778A String Game 题目描述 Little Nastya h ...
- 2.20模拟赛T3解析
零.送给未来复习的自己: 如果一段时间后看不懂自己的题解了,可以尝试拿\(n=12\)这一样例模拟,因为\(n=2^2\times 3^1\)只有两个不同的质因子,并且一个是指数只有\(2\),一个指 ...