首页 > 其他分享 >Solution Set - 杂题分享3

Solution Set - 杂题分享3

时间:2024-04-22 17:34:07浏览次数:17  
标签:片段 Set frac 环上 黑点 Solution prod 杂题 逆序

[THUPC2018]淘米神的树

先考虑开局只有一个黑点,将黑点做根,问有多少种排列满足父亲在儿子前。很平凡的问题,设\(f_u\)为\(u\)子树的合法序列个数,\(f_u=(siz_u-1)! \sum_{v \in son_u} \frac{f_v}{siz_v!}\),先将根放入,再由合法子树相对序列代替全排列。整理答案为\(ans=\frac{\prod_u (siz_u-1)!}{\prod_{u \neq rt} siz_u!}=\frac{n!}{\prod_u siz_u}\)。

再考虑两个黑点,建一个虚点为根,连上两个黑点,一开始虚点为黑点,一此操作后,a,b为黑点,与原问题等价。现在树成为基环树。枚举删除一条环上的边的答案,当环上的某点作为环上最后一个染黑的点会在断左边边和断右边边中重复出现,答案要乘\(\frac{1}{2}\)。

处理出除环上点的子树大小,给环上点重编号,虚点是0,其他点一次是1~k,设\(a_u\)是环上u点的除了环上儿子的子树大小,\(b_u\)是断掉i->i+1边后的子树大小。有

\[b_u=\begin{cases} \sum_{j=1}^u a_j & 1 \le u\le i \\ \sum_{j=u}^k a_j & i+1\le u\le k \end{cases}\]

对a做前缀和为c

\[\prod_u b_u=\prod_{u=0,u \neq i} |c_u-c_i| \]

可多项式快速插值,时间复杂度\(O(nlog^2n)\)

Mergesort Strikes Back

题意

一个长度为\(n\)的随机排列,进行深度为\(k\)的归并排序(\([1\dots n]\)为第一层),求期望逆序对个数。

题解

首先考虑对两个序列归并,找到比前位所有元素的大的元素,一次为分块开头,对每个块以开头元素的大小排序。而对归并k层分成的\(2^{k-1}\)个片段来说,同样。在每个片段中,合并时的相对顺序保持不变,因此它们所贡献的期望逆序对个数只是\(\frac{l(l-1)}{4}\)(对于长度为l的片段),可以看作枚举两个点,前大于后与后大于前的概率相同,那么前大于后形成逆序对的概率是\(\frac{1}{2}\)。

再次假设每个片段都被划分成前面提到的块,我们只是按照开头的元素对这些块进行排序。让我们考虑由两个不同段中的两个块形成的逆序对。假设形成逆序对的元素是各自片段中的第i个和第j个,考虑这i+j数中的最大值 ,如果它是这两个元素中的一个,就不能形成逆序对。最大值既不是i也不是j的概率是\(\frac{i+j-2}{i+j}\),i和j的大小顺序与两个块开头最大值的大小顺序不同的概率为\(\frac{1}{2}\),那么i,j形成逆序对的概率为\(\frac{i+j-2}{2(i+j)}=\frac{1}{2}-\frac{1}{i+j}\)。

再预处理一些东西,可以在\(O(n)\)的时间计算两个片段的答案,又有结论片段的长度取值最多2个,答案又只与段长对有关,所以全部答案可得。

标签:片段,Set,frac,环上,黑点,Solution,prod,杂题,逆序
From: https://www.cnblogs.com/yswn/p/18150381

相关文章

  • set容器
    set容器定义于<set>头文件,并位于std命名空间中。因此如果想在程序中使用set容器,该程序代码应先包含如下语句:#include<set>usingnamespacestd;set容器的类模板定义如下:template<classT,//键key和值value的类型classCom......
  • 使用ThreadPool.SetMinThreads方法提升API服务响应性能
     使用该方法的背景?某个API服务在每日请求量40W的情况下,流量增多时会产生大量请求异常:Theoperationwascanceled,从实际情况来看,并不是外部依赖接口或者服务实例不足导致,于是设置线程池数量后,服务性能提升效果显著。方法定义:设置线程池在新请求预测中维护的空闲线程数。pu......
  • django的settings
    django的settings模板jwt配置fromdatetimeimporttimedelta#jwt配置SIMPLE_JWT={#AccessToken的有效期'ACCESS_TOKEN_LIFETIME':timedelta(minutes=5),#RefreshToken的有效期'REFRESH_TOKEN_LIFETIME':timedelta(days=7),......
  • Django之settings源码分析
    引入查看源码的前提刚开始阅读一些库的源码的时候,最好选一些代码量少的先感受一下看到看不懂的,没有必要去死磕,挑一些看得懂的,再结合网上的一些文献一.django的两个配置文件一个是暴露给用户可以自己自定义的配置文件也就是项目根目录下的settings.py一个是项目默认的配......
  • freepascal TJsonDataset
    unitUnit1;{$modeobjfpc}{$H+}interfaceusesClasses,SysUtils,Forms,Controls,Graphics,Dialogs,DBCtrls,DBGrids,DB,fpjson,fpjsondataset;typeTForm1=class(TForm)DataSource1:TDataSource;DBGrid1:TDBGrid;procedureForm......
  • java中的set集合
    java中的set集合目录java中的set集合1.HashSet集合1.1HashSet的特点1.2HashSet常用方法2.LinkedHashSet集合2.1LinkedHashSet集合的特点3.TreeSet集合3.1TreeSet集合的特点3.2TreeSet的基本使用4.HashSet、LinkedHashSet、TreeSet的使用场景5.list和set集合的区别5.1有序性5.2唯......
  • Java 集合进阶使用(List Map Set)
    CollectionCollection是其子集的父类,所以可以使用多态的规矩,比如:创建一个ArrayList对象,用Collection接收Collection<Integer>collection=newArrayList<>();注意:Collection为接口,不能直接创建对象,但可以利用其子类,使用Collection方法,就如上方代码一样Collection......
  • ATCF 杂题选讲 LHF
    CF1329DDreamoonLikesStrings将原序列中\(s_i=s_{i+1}\)的位置拿出来,记这些位置的集合为\(S\)。考虑我们选择\(S\)相邻两个数,并且删除中间这一段会产生什么影响。如果两边的数不同,那么这两个位置都会在\(S\)中消失,否则,会在\(S\)中新加入一个为这个数的位置。我们总......
  • dbt asset-paths 简单说明
    dbt的asset-paths是一个比较有意思的配置,可以用来增强我们的文档信息,比如存放一些图片在资源描述中引用资源生成的文档中可以进行显示,提示文档的信息参考配置dbt_project.ymlasset-paths:["assets"]使用假如assets包含一些描述图片信息models/ap......
  • C117 莫队配合 bitset P4688 [Ynoi2016] 掉进兔子洞
    视频链接:C117莫队配合bitsetP4688[Ynoi2016]掉进兔子洞_哔哩哔哩_bilibili   LuoguP4688[Ynoi2016]掉进兔子洞//莫队配合bitsetO(n*sqrt(n))#include<iostream>#include<cstring>#include<algorithm>#include<cmath>#include<bitset>usin......