首页 > 其他分享 >AGC020F Arcs on a Circle

AGC020F Arcs on a Circle

时间:2023-12-26 17:44:22浏览次数:31  
标签:nn Arcs 卷积 text 可以 int 子集 Circle AGC020F

一个和值域无关的算法,复杂度 \(O(4^nn^2)\),不过好像可以用子集卷积和拉格朗日插值优化至 \(O(3^nn^3)\)。

如果说原问题在整数上做,我们通常可以用生成函数来刻画容斥的式子,求个二维 \(\exp\) 状物就可以了,但是在实数域似乎不太好扩展,但实际上是可以扩展的。

原问题实际上可以抽象为类似连通子图计数的东西,因为环计数实际上就是链计数乘上第一段的长度,而要求第一段为连通块,而连通块具有和连通子图相似的性质,求个类似 \(\ln\) (其实并不是 \(\ln\)),就可以了。特别的,如果不存在一个弧跨过 \(C\) 到 \(0\) 这部分时是数不到的,但这部分是平凡的,就是 \(\prod_{i=1}^{n}\frac{C-l_{i}}{C}\)。而能通过我们以如上方式数到的都是不合法的方案,因为合法的方案不存在任何一个断开位置。

现在我们只需要求连通块的 \(\text{GF}\) 点乘上 \(\frac{x}{C}\),再与原来的相乘即可就行了,但卷积如何刻画呢?由于直接用概率来描述似乎比较奇怪,我们采用几何概型的思想,将其视为求体积,虽然是高维的。

一个平凡的想法是令 \(F_{S}(x)\) 表示 \(S\) 集合的长度为 \(x\) 内选择的体积和,令 \(G_{S}(x)\) 表示 \(S\) 集合的长度为 \(x\) 内选择的并要求构成一个连通块的体积和,那么有 \(G_{S}(x)=F_{S}(x)-\sum_{T\subsetneqq S,T\not=\emptyset} F_{T}(x)*G_{\complement_ST}(x)\),其中 \(F(x)*G(x)=\int_{0}^{x}F'(y)G(x-y)dy\)(注意其中求导所丢失的常数项要特殊处理)。一开始 \(F_{S}(x)\) 其实是一个分段多项式,因为有要求 \(x\geqslant \max_{i\in S}l_{i}\),不难发现进行运算后 \(F_{S}(x)\) 的段数最多是 \(2^{|S|}-1\) 的,因为每一个段的界点其实都形如 \(T\subset S,T\not=\emptyset\) 的一个集合 \(T\) 的和 \(W(T)\) (即 \(\sum_{x\in T}l_{x}\)),那么实际上我们可以令 \(F_{S}(x)=\sum_{T\subset S,W(T)\leqslant C}f_{S,T}(\frac{C-W(T)}{C})\),则 \(f\) 就是一个多项式了。

现在我们只需要能求两个多项式的 \(*\),就可以求解两个函数的 \(*\) 了,我们要快速计算 \(h=f*g\) 即 \(h(x)=\int_{0}^{x}f'(y)g(x-y)dy\),如果直接使用暴力二项式定理展开对展开的分别积分可以算出 \(R(a,b)\) 表示 \(x^a\) 与 \(x^b\) 贡献到 \(x^{a+b}\) 的贡献,将 \(R\) 打表之后会发现一个神奇的事情,\(R(x,y)=\frac{1}{\binom{x+y}{x}}\),这是为什么呢?实际上我们发现我们的 \(*\) 运算其实和第一类欧拉积分非常的相似,而贝塔函数在非负整数部分的取值和组合数倒数有一定关联,对 \(f\) 的导将其变成了一个更加优美的形式:\(\frac{1}{\binom{x+y}{x}}\)。

像定义 \(\text{EGF}\) 一样,我们可以定义一个和积分有关的生成函数 \(\text{IGF}\),满足 \(f=\sum_{i=0}^{\infty}a_{i}i!x^i\),这样就可以把多项式的四则运算以及开根求导积分 \(\ln,\exp\) 等东西全部放上去。

现在将 \(G\) 求好了,但如何将其点乘上 \(x\) 本身呢,注意到令 \(H\) 为 \(G\) 的两侧都被覆盖的面积,那么 \(G=\int_{}\int_{}H\),而我们最终要其实就是 \(\int_{}Hx\),所以我们求 \(\int_{}G''x\) 即可 (这里一次项需要修正,常数项不用是因为在本题限制下常数项一定为 \(0\)),由于这个算的是第一段,可能还有后面的,令 \(T=\int_{}G''x\),我们算出 \(T+T*F\) 就是最终的 \(\text{GF}\) 形式了。

由于 \(F\) 只有一段,枚举子集与其中一个子集构成的段的复杂度是 \(O(4^n)\),暴力卷积是 \(O(n^2)\) 的,所以是 \(O(4^nn^2)\) 的。但似乎子集部分可以子集卷积,拉格朗日插值可以优化掉暴力卷积,于是可以 \(O(3^nn^3)\),用 \(\text{poly}\) 优化掉子集卷积的暴力卷积可以 \(O(3^nn^2\log n)\),但是由于 \(n\) 不得不比较小,可能不如暴力卷积。

特别的,该做法在值域非常小的时候可以将段给换成值域,这样里面的枚举子集可以优化掉。另外 \(\text{PKUSC2021 D2T3}\) 招新也可以用同样的方法不带值域,做到暴力卷积 \(O(n^6)\),三维 \(NTT\) 优化可以 \(O(n^3 \log n)\),实际上就是把这个东西拼上一个有标号二分图计数的 \(\text{trick}\)。

标签:nn,Arcs,卷积,text,可以,int,子集,Circle,AGC020F
From: https://www.cnblogs.com/zhouhuanyi/p/17928922.html

相关文章

  • halcon-轮廓拟合圆fit_circle_contour_xld
    fit_circle_contour_xld(xld,'algebraic',-1,0,0,3,2,Row,Column,Radius,StartPhi,EndPhi,PointOrder)*对XLD轮廓做近似圆计算--拟合圆--获得圆数据*参数1:输入xld轮廓*参数2:圆的拟合算法*'ahuber'对轮廓点进行加权,以减少异常值的影响*'......
  • 队列和循环队列(ArrayQueueAndCircleQueue)
    队列数组队列1.初始化队列privateintmaxsize;//最大长度privateintfront;//指向队首的前一个位置privateintrear;//指向队尾privateint[]arr;publicArrayQueue(intmaxsize){this.maxsize=maxsize;arr=newint[maxsize];......
  • Maximum Balanced Circle
    here首先根据题意,我们不难有数字是连续的这种感悟。而且限制是值域上的,从下标入手发现难以突破,便从值域上入手。从小到大考虑每个数字,然后dp,可以参考这篇题解。至于方案的输出,有两种情况。只有自己\(i\)和\(i-1\),直接输出即可。有自己和\(i-1\)的环,定义print输出环,且最大......
  • [AGC020F] Arcs on a Circle 题解
    ArcsonaCircle首先,一个非常自然的想法是尝试断环成链。怎么断呢?我们发现,选择最长线段的起点处截断是个非常好的选择,因为不可能有一个线段完全覆盖它。这之后,一个紧接着的想法就是DP。假如把描述中的全部“实点”改成“整点”的话,那么这题是比较trivial的,可以通过随便状压......
  • Python turtle.circle()函数
    turtle.circle()函数   定义:turtle.circle(radius,extent=None)   作用:根据半径radius绘制extent角度的弧形   参数:             radius:弧形半径                            当radius值为正数时,圆心在当前位置/小海龟左......
  • win10 按键盘偶尔会出现一个光圈when pressing ctrl, randomly a white circle thing
    whenpressingctrl,randomlyawhitecirclethingappearsaroundmymousecurser.SolutionTwo:Thisonlyappliesifyouhave"Powertoys"installed. OpenPowertoysNavigateto'Mouseutilities'onthesidepanel.Turnoff'......
  • 记录一次数据库连接数超限问题(ArcSDE)
    环境:Oracle11.2.0.4RAC集群  ArcGIS10.1问题说明:服务器间歇性的会报连接数超限的问题,经常需要手动释放部分连接才能解决。之前遇到过类似的问题,主要是增大数据库连接数,同时检查死链接的情况,因为修改配置需要重启数据库,所以前期一直手动释放连接,待其他操作再一起重启数据库。......
  • 曲线艺术编程 coding curves 第三章 弧,圆,椭圆(ARCS, CIRCLES, ELLIPSES)
    第三章弧,圆,椭圆(TRIGCURVES)原作:KeithPetershttps://www.bit-101.com/blog/2022/11/coding-curves/译者:池中物王二狗(sheldon)blog:http://cnblogs.com/willian/源码:github:https://github.com/willian12345/coding-curves曲线艺术编程系列第三章在这一篇中我......
  • Codeforces #564 (Div. 2) D. Nauuo and Circle[树形DP]
    题目链接:http://codeforces.com/contest/1173/problem/D 解题思路:首先得知道按照圆周顺序的话,那么一颗子树必须存放在连续的一段区间里面,现在我们假设根节点是1,那么一颗为u做根节点的子树他的方案数就是各个儿子的方案数的乘积最后再乘以儿子个数+1(u节点本身)的排列方案数。所......
  • leetcode 657. Judge Route Circle
    Initially,thereisaRobotatposition(0,0).Givenasequenceofitsmoves,judgeifthisrobotmakesacircle,whichmeansitmovesbackto theoriginalplace.Themovesequenceisrepresentedbyastring.Andeachmoveisrepresentbyacharacter.The......