首页 > 其他分享 >新高一暑假第一期集训新课【笛卡尔树】(补)

新高一暑假第一期集训新课【笛卡尔树】(补)

时间:2024-11-05 21:30:27浏览次数:1  
标签:frac 笛卡尔 sum 新课 len 集训 times displaystyle

新高一暑假第一期集训新课【笛卡尔树】(补)


B. Beautiful Pair

如果构建一棵笛卡尔树的话那么两个点之间的 \(max\) 就在笛卡尔树的 \(\operatorname{LCA}\) 位置。

所以对于每个位置维护一个线段树,然后每次暴力枚举小的那棵子树在大子树的线段树中查询即可。然后线段树合并或者启发式合并上去就好了。

建笛卡尔树的时候用 \(\operatorname{RMQ}\) 查询区间最大值然后递归下去就好了。

时间复杂度 \(\Theta (n\log^2 ⁡n)\)。

注意 \(1\) 要特判就好了。


C. [51NOD1934] 受限制的排列

去找最小的那个数,最小的数的 \(l\) 和 \(r\) 应该就是 \(1\) 和 \(n\)。

因为这是一个排列,我们把问题从最小值处 \(p\) 分开,得到两个一样的问题 \((1, p - 1)\) 和 \((p + 1, n)\)。

设区间长度为 \(len\),分出的两个区间长度为 \(len_l\) 和 \(len_r\),贡献就是这两个问题的答案的积乘上 \(\displaystyle\dbinom{len - 1}{len_l}\)。

找最小值直接用 map 暴力存下来就好了。时间复杂度 \(\Theta(n \log n)\)。

好像没用到笛卡尔树诶


D. [AGC028B] Removing Blocks

这类求 所有情况的代价,都可以这样求:随机一个排列,求代价的期望 \(\times\) 情况数

考虑计算每个元素在一个固定顺序中,贡献到代价中的次数。

建立基于删除时间的小根堆笛卡尔树,则笛卡尔树上一个节点对答案的贡献是字数内 \(a_i\) 之和。

设 \(h_i\) 是 \(i\) 号点的贡献,令根节点深度为 \(1\),则代价之和为 \(\displaystyle\sum\limits_{i = 1}^n h_i \times a_i\)。

考虑一个排列:若 \(x \lt i\) 且 \(x\) 是 \(i\) 的祖先,则 \(x,x + 1, \dots, i - 1\) 都应该比 \(i\) 后删除,这样的方案数占总方案数的 \(\displaystyle\frac{(i - x)!}{(i - x + 1)!} = \frac{1}{i - x + 1}\)。

因为只有这 \(i - x + 1\) 个元素的相对顺序是重要的,其中恰好有 \(\displaystyle\frac{1}{i - x + 1}\) 个排列满足 \(i\) 在最前面被删除。

同理 \(x\gt i\),有 \(\displaystyle\frac{1}{x - i + 1}\) 的概率成立。

对于每一个 \(x\lt i\),\(x \gt i\),都可以有这样的概率,因此有:

\[E(h_i) = \sum_{x = 1}^{i - 1} \frac{1}{i - x + 1} + \sum_{x = i + 1}^n \frac{1}{x - i + 1} + 1 \]

设 \(\displaystyle s_x = \sum_{i = 1}^x \frac{1}{i}\),则 \(E(h_i) = s_i + s_{n - i + 1} - 1\),因此答案为:

\[ans = n! \times \sum_{i = 1}^n (s_i + s_{n -i + 1} - 1) \times a_i \]

按式计算即可。


标签:frac,笛卡尔,sum,新课,len,集训,times,displaystyle
From: https://www.cnblogs.com/Leirt/p/18528919

相关文章

  • CSP2024 前集训:NOIP2024加赛 1
    前言赛时本来rk3,赛后自己加hack卡自己于是成rk4了。因为这场是假做法大战,T1假贪心有\(92pts\);T2\(O(n^2m)\)能过(是因为数据里\(m\le10\));T3相当抽象,赛时我打的爆搜只加了一个剪枝能得\(70pts\),赛后发现无解的时候会跑满,于是提前判掉无解就过了甚至最优解\(30ms\)......
  • 【排列】(笛卡尔树上 dp?)
    比赛在这B.排列前言:笛卡尔树上dp?这名字很妙啊,但其实不需要笛卡尔树,只不过利用了笛卡尔树的定义一个性质:我们设一个区间\([l,r]\)中的最大值的位置为\(pos\),发现可以把该区间分为\([l,pos]\)和\([pos,r]\)两个子区间,并且这两部分互不影响,就是别管我左边怎么放数,不会对......
  • 极市平台 | ECCV‘24|Plain-Det:同时支持多数据集训练的新目标检测
    本文来源公众号“极市平台”,仅用于学术分享,侵权删,干货满满。原文链接:ECCV'24|Plain-Det:同时支持多数据集训练的新目标检测极市导读论文提出了Plain-Det,提供了灵活性以适应新的数据集,具有跨多样数据集的稳健性能、训练效率和与各种检测架构的兼容性。结合Def-DETR和Plain-Det,......
  • [日记] NOIP前集训日记
    模拟赛日期T1T2T3T4TotalRank\(10.29\)\(0/0/100\)\(0/0/0\)\(0/0/0\)\(0/0/0\)\(0/0/100\)\(14/17\)\(10.31\)\(100/100/100\)\(100/100/100\)\(60/50/60\)\(20/20/20\)\(280/270/280\)\(1/?\)\(11.1\)\(50/100......
  • 「闲话」NOIP 集训
    10.31因为明天是11.1,所以从今天开始写上午T1没看让输出啥所以一眼会了求所有j看了输出之后,额······诶,其实也对啊,直接根据每个j求出的i区间查分一下就好了,调和级数的复杂度20min打完了,本来以为有些conercase要调一会,但直接过了所有样例,爽!!后记:发现提交时间......
  • 2024 -- 国庆集训 -- 临沂四中 -- 10月01 日 -- S/N模拟赛#1 题解
    A.2025--[炼石计划--NOIP模拟三]--T1--矩形赛时草了个\(O(n^4\log(n))\)竟然能过70分虽然本来就是这么分配的,发现正解只需将二分改为双指针就可以了,最气的是上面计算的时候用到还是尺取下面就用的二分(唐诗)。其实这题就是暴力,然后在低级的暴力上加一些操作变得稍微高级一......
  • NOIP2024集训Day65 贪心
    NOIP2024集训Day65贪心A.[NOI2015]荷马史诗简化题意,即构造一颗\(k\)叉树,每个节点的权值为其所有孩子的权值之和,给定的\(n\)个数必须使用,其余空缺处用\(0\)补全。考虑使用优先队列,首先弹入\(n+(n-1)\%(k-1)\)个元素(不足处用0代替),然后每次弹出前\(k\)小的数......
  • OpenCV与AI深度学习 | 实战 | YOLO11自定义数据集训练实现缺陷检测 (标注+训练+预测
    本文来源公众号“OpenCV与AI深度学习”,仅用于学术分享,侵权删,干货满满。原文链接:实战|YOLO11自定义数据集训练实现缺陷检测(标注+训练+预测保姆级教程)导 读   本文将手把手教你用YOLO11训练自己的数据集并实现缺陷检测。安装环境YOLO11的介绍和使用这里不再赘......
  • 集训 · 第二幕
    跳转到最新一天(为啥我的集训闲话要以放假打头……)10.27(哎之前写的没了就简单说了,没了的原因在10.29)上午绝区零,中规中矩,我妹帮我养了简,好用捏......
  • 流体力学Euler方程(笛卡尔坐标、柱坐标、球坐标)
    \[\begin{align}&\frac{\partial\rho}{\partialt}+\left[\frac{\partial\left(\rho{{v}_{1}}\right)}{\partial{{x}_{1}}}+\frac{\partial\left(\rho{{v}_{2}}\right)}{\partial{{x}_{2}}}+\frac{\partial\left(\rho{{v}_{3}......