【BEST定理】牛客挑战赛43

20 篇文章 0 订阅
15 篇文章 0 订阅

牛客挑战赛43

A.序列划分

  • 求和即可。

B.集合操作

  • 可以发现从前往后删除,观察DP转移发现就是组合数。

C.最优公式

  • 因为没有发现答案输出要取模所以没过。

  • 可以打表发现性质, a = b a=b a=b,然后三分判断,是两个log的。

  • 考虑 ( x 1 , y 1 ) , ( x 2 , y 2 ) (x1,y1),(x2,y2) (x1,y1),(x2,y2)的曼哈顿距离 ∣ x 1 − x 2 ∣ + ∣ y 1 − y 2 ∣ = m a x ( ∣ x 1 − x 2 + y 1 − y 2 ∣ , ∣ x 1 − x 2 + y 2 − y 1 ∣ ) |x1-x2|+|y1-y2|=max(|x1-x2+y1-y2|,|x1-x2+y2-y1|) x1x2+y1y2=max(x1x2+y1y2,x1x2+y2y1)

  • 那么如果 A i = x 1 + y 1 , A j = x 1 − y 1 , a = x 2 + y 2 , b = x 2 − y 2 A_i=x1+y1,A_j=x1-y1,a=x2+y2,b=x2-y2 Ai=x1+y1,Aj=x1y1,a=x2+y2,b=x2y2,上面的式子的形式就是我们要求的东西了。

  • 考虑 x 1 = ( A i + A j ) / 2 , y 1 = ( A i − A j ) / 2 x1=(A_i+A_j)/2,y1=(A_i-A_j)/2 x1=(Ai+Aj)/2,y1=(AiAj)/2,两维拆开分别取中位数就是 x 2 , y 2 x2,y2 x2,y2了,由于第二维显然中位数是0,所以 y 2 = ( a − b ) / 2 = 0 y2=(a-b)/2=0 y2=(ab)/2=0

  • 然后二分第一维的中位数即可做到 n l o g n nlogn nlogn

D.数组操作

  • 考虑生成函数,由于是组合起来的,所以是指数型生成函数,把 n n n个数的生成函数乘起来即可。
  • 对于 i i i A A A变为0的操作个数, B B B表示变为 1 1 1的操作个数,那么它的生成函数就是 F ( x ) = [ a i = 0 ] + A x / 1 ! + ( A + B ) A x 2 / 2 ! + ( A + B ) 2 A x 3 / 3 ! . . . = A e ( A + B ) x A + B + [ a i = 0 ] F(x)=[a_i=0]+Ax/1!+(A+B)Ax^2/2!+(A+B)^2Ax^3/3!...=\frac{Ae^{(A+B)x}}{A+B}+[a_i=0] F(x)=[ai=0]+Ax/1!+(A+B)Ax2/2!+(A+B)2Ax3/3!...=A+BAe(A+B)x+[ai=0]
  • e ( A + B ) x e^{(A+B)x} e(A+B)x换成 x A + B x^{A+B} xA+B,然后启发式合并即可两个log完成这题。

E.下落的小球

  • 考虑线段相交,保留最下面的交点,以及对于所有询问和线段下端点求下面第一个碰到的线段即可。
  • 扫描线即可。

F.矩阵与排列

  • 显然可以把它变成一个图上的问题。考虑最后1到1的路径,我们需要在 n n n个1矩形中各选一条边,然后以一个排列的顺序组合在一起,最后连成1到1的一条欧拉回路
  • 对于欧拉回路计数,有一个BEST定理
  • 对于一个所有点出度=入度的连通有向图, d e g [ i ] deg[i] deg[i] i i i的出度, T T T为某个点为起点的外向树个数,则有欧拉回路个数为: A n s = T ∗ ∏ i = 1 n ( d e g [ i ] − 1 ) ! Ans=T*\prod_{i=1}^n{(deg[i]-1)!} Ans=Ti=1n(deg[i]1)!
  • 如果把 T T T改成内向树, d e g deg deg改成入度也是可以的,任意一个点为起点都是可以的。
  • 证明考虑构造:
    • 首先起点钦定一条边为初始边避免算重,对于除了外向树上以外的边,在每一个点上钦定一个顺序,贡献: ( d e g [ i ] − 1 ) ! (deg[i]-1)! (deg[i]1)!
    • 从起点的初始边出发,对于当前点,先走外向树上的边,再按照钦定的顺序走边。
    • 显然这样走出来的一定是欧拉回路。
    • 反过来也是一样的,对于一个欧拉回路一定对应一个外向树。
  • 一般的图的外向树计数我们可以考虑矩阵树定理,外向树就用出度矩阵-邻接矩阵,然后挖掉 s s s s s s列的余子式,内向树就是入度矩阵-邻接矩阵(注意邻接矩阵上是有向边)
  • 那么这题就直接 f ( i , d 1 , g 1 , d 2 , g 2 , k ) f(i,d1,g1,d2,g2,k) f(i,d1,g1,d2,g2,k)转移就好了, d 1 , d 2 d1,d2 d1,d2 1 , 2 1,2 1,2入度, g 1 , g 2 g1,g2 g1,g2 1 , 2 1,2 1,2出度, i i i表示加了多少边, k k k表示当前选择的外向树的形态。
  • n 5 ∗ 9 ∗ 6 n^5*9*6 n596 6 6 6种外向树, 9 9 9种转移。
  • 实际上达不到上界,还是可以跑的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值