首页 > 其他分享 >【2024全国赛前多校联考1】逆序对

【2024全国赛前多校联考1】逆序对

时间:2024-06-23 11:42:23浏览次数:3  
标签:text 多校 贡献 2024 cdots Theta 联考 单调 逆序

题意:

给定 \(n,K\)。

对于 \(i=1,2,3,\cdots,n\),你需要求出在所有逆序对数为 \(k\) 个的排列中 \(i\) 位置在小根笛卡尔树上的深度之和。

数据范围:\(n \le 300,K \le \dfrac{n(n-1)}{2}\)。

思路:

我们要求的是:

\[\sum_{inv(p)=K} dep(i) \]

这个 \(dep(i)\) 即 \(i\) 的祖先个数,考虑哪些节点会成为 \(i\) 的祖先,画几个例子会发现就是 \(i\) 往左或往右的单调栈中的元素。

考虑两边的贡献分开算,我们先算 \(i\) 往左的单调栈的大小和。

此时 \(i\) 右边的元素不会对答案有贡献,但是它们对逆序对数会有贡献。具体而言,对于一个 \(j>i\) 的位置,根据其相对排名,其可以贡献 \(0,1,2,\cdots, j-1\) 个逆序对。

对于左边,考虑 \(\text{dp}\),令 \(f(i,j)\) 表示长度为 \(i\),逆序对数为 \(j\) 的排列的单调栈大小和。

这个单调栈大小就是后缀 \(\min\) 个数。转移时每次在前面插入一个数,枚举其相对排名。如果插入的数相对排名最小,那么后缀 \(\min\) 个数加 \(1\),同时其会与所有相对排名比他小的数组成逆序对。

利用前缀和优化容易做到 \(\Theta(n^3)\) 处理这个 \(\text{dp}\)。

而每个 \(j>i\) 的位置的贡献相当于把 \(f(i)\) 的生成函数卷上 \(x^{0}+x^{1}+\cdots x^{j-1}\)。

那么 \(i\) 处的答案为:

\[[x^k]f(i)\cdot \prod_{j>i} x^0+x^1+\cdots +x^{j-1} \]

左边已经预处理过了,考虑右边。

倒着扫 \(i\),每次右边部分多卷上一个 \(x^0+x^1+\cdots+x^{i-1}\),这个不用 \(\text{poly}\) 科技,直接前缀和优化就行。单次 \(\Theta(n^2)\),总复杂度 \(\Theta(n^3)\)。

求左右两边卷起来后的 \(k\) 次项系数也可以暴力。也是单次 \(\Theta(n^2)\),总复杂度 \(\Theta(n^3)\)。

往右的单调栈的贡献与往左的是对称的,这里略去了。

这样我们就得到了一个 \(\Theta(n^3)\) 的解决算法。

标签:text,多校,贡献,2024,cdots,Theta,联考,单调,逆序
From: https://www.cnblogs.com/zzzYheng/p/18263206

相关文章

  • UNIQUE VISION Programming Contest 2024 Summer (AtCoder Beginner Contest 359)
    A-CountTakahashi(abc359A)解题思路遍历判断即可神奇的代码#include<iostream>#include<algorithm>#include<vector>#include<queue>#include<map>#include<set>#include<cstring>usingnamespacestd;#defineendl'\n......
  • 2024年6月计算机视觉论文推荐:扩散模型、视觉语言模型、视频生成等
    6月还有一周就要结束了,我们今天来总结2024年6月上半月发表的最重要的论文,重点介绍了计算机视觉领域的最新研究和进展。DiffusionModels1、AutoregressiveModelBeatsDiffusion:LlamaforScalableImageGenerationLlamaGen,是一个新的图像生成模型,它将原始的大型语言模型......
  • Java 学习知识点汇集(2024.6)
    VSCode,run程序时,提示,错误:找不到或无法加载主类Exam_32猜测原因,目录中有中文字符?解决办法:**在Java中,final类不能作为父类被继承**。讯飞星火:在Java的LSP(LiskovSubstitutionPrinciple,里氏替换原则)中,如果一个类被设计为不可变的(immutable)或者已经完成的(complete),它应该......
  • 【HDC 2024】华为云开发者联盟驱动应用创新,赋能开发者成长
    本文分享自华为云社区《【HDC2025】华为云开发者联盟驱动应用创新,赋能开发者成长》,作者:华为云社区精选。6月21日到23日,华为开发者大会(HDC2024)于东莞松山湖举行,这里有丰富多样的主题演讲、峰会、专题论坛和互动体验,数百场面向开发者的特色活动,汇聚璀璨星光、激发创新灵感……6......
  • 2024最新任务悬赏源码活动营销三级分销返佣积分商城版
    内容目录一、详细介绍二、效果展示1.部分代码2.效果图展示三、学习资料下载一、详细介绍任务悬赏源码活动营销三级分销返佣积分商城版这个是带有VUE源码的搭建也是很简单可生成APP功能说明:分销功能:用户拉新用户做任务可以获取任务返佣,三级分销逻辑。用户拉新会......
  • 2024年6月最新版波猫商店自动售卡系统源码
    内容目录一、详细介绍二、效果展示1.部分代码2.效果图展示三、学习资料下载一、详细介绍最新版波猫商店自动售卡系统源码适用于各种电商、优惠卷、论坛邀请码、充值卡、激活码、注册码、腾讯爱奇艺积分CDK等,支持手动和全自动发货,还有类似1688的分层批发模式。功......
  • 重磅!2024年最新影响因子(生态学/林学/土壤学/遥感/微生物/环境科学/植物科学) 收藏版!
    2024年最新影响因子正式揭晓!2024年6月20日,ClarivateAnalytics(科睿唯安)发布了各大SCI期刊的2023年影响因子。从最新结果看,今年的影响因子继续“普跌”,其中顶刊Nature和Science均有下降,分别至50.5和44.7。我们公众号《生态学者》特地从中选取生态学、林学、土壤学、遥感、微生......
  • 2024年华为OD机试真题-生成哈夫曼树-(C++/Java/python)-OD统一考试(C卷D卷)
    题目描述给定长度为n的无序的数字数组,每个数字代表二叉树的叶子节点的权值,数字数组的值均大于等于1。请完成一个函数,根据输入的数字数组,生成哈夫曼树,并将哈夫曼树按照中序遍历输出。为了保证输出的二叉树中序遍历结果统一,增加以下限制:二叉树节点中,左节点权值小于右节点......
  • 【C#进阶】单元测试_2024-06-22
    单元测试什么是单元测试?想象一下,你在做一道大菜,每种食材的准备就是一个个小任务。单元测试就像是在烹饪前检查每样食材是否新鲜、切割是否恰当。在编程中,一个“单元”通常指的是代码中的最小可测试部分,比如一个方法。单元测试就是编写一小段代码,专门用来检查这个方法是否按预期......
  • UNIQUE VISION Programming Contest 2024 Summer (AtCoder Beginner Contest 359) 题
    点我看题A-CountTakahashi没啥好说的点击查看代码#include<bits/stdc++.h>#definerep(i,n)for(inti=0;i<n;++i)#definerepn(i,n)for(inti=1;i<=n;++i)#defineLLlonglong#definefifirst#definesesecond#definepbpush_back#definemprmake_pair......