• [心得]暑假7-27


    最近rp=0

    上午考试靠炸了,中午迟归被抓了

    达哥出的题目,三道“随 单 题”,一点也不“随” “单”

    考试时心态。。炸道平复(死了)

    T1想了1个小时,码了一个错误的dp

    完了攻T2

    T2看似还可做,t=0时来一手换根,t=1时高斯消元

    期望得分60 ,实得30,原因:SUM未清空,还有就是清空方程数组时用了N2归零(没判t即清空,导致t=0,1e5数据直接卡死)

    本来这场考试我是不敢看T3的,留了30min打算写暴力

    然而,发现T3貌似是最近卡特兰数刷过的类型

    把type0,1码了一下,期望50分,结果临时一慌敲错了数,外加没预处理出逆元,只得了20分

    那么这把又是扔了好多分,rk34要稳二机房

    改题还算顺利,虽说官方题解是看不懂

    事实上T2的思路。。不是没有,t=1的推到了$b[i]-b[fa]=SUM-s*sum[i]$,但是没有想到用 $b[rt]=sum_{i != rt} sum[i]$,结果推不出SUM,只好高斯消元拿个1e3

    T1确实是毒

    原根性质什么的我也不知道

    颓了手题解发现二进制拆分确实挺神

    $f[i][j]$ 表示拿完i个数$x=j$时的方案数,那么最终期望便是

    $sum_{i=0}^{mod-1} f[M][i]*i *inv(n^m)$%p

    (类似wq的奇袭做法)

    我要得到m层的状态,不必逐一转移

    我们发现对于任意$i,j$,满足$f[i+j][l*r$%mod$]+=f[i][l]*f[j][r]$%p

    (意为:我先拿出i个数得到$x=l$,再拿$j$个数,这$j$个数的$x=r$,那么最终$i+j$个数$x=l*r%mod$)

    也就是说可以“跨越式”转移

    于是考虑分解m,$m=2^{k_1}+2^{k_2}+2^{k_3}+...+2^{k_n}$,我们可以只用这些&2^k&的状态转移到m

    由$f[2*i][l*r$%mod$]+=f[i][l]*f[i][r]$%p可以进行$f[2^k]$之间的转移

    那么其实可以省掉第一维,或者,$f[i][j]$表示拿了$2^i$个数,$x=j$时的方案数(开30就够了)

    可以用$g[]$表示当前转移到的状态,最终把$g$转移到$m$层即可

  • 相关阅读:
    UINavigationBar 调整
    UILabel根据内容自动调整高度
    [iOS开发]文档导读
    [iOS开发]NSUserDefaults使用注意
    Xcode 断点的使用
    [iOS开发] UIKit Dynamics
    [iOS开发]ShareSDK
    objective-c GCD
    面向对象设计原则
    Go语言学习教程:go语言的包管理
  • 原文地址:https://www.cnblogs.com/Duan-Yue/p/11256884.html
Copyright © 2020-2023  润新知