• Atcoder总结 Part III


    AGC3F Fraction of Fractal

    首先先判掉两个特殊情况

    如果将两个原来的矩阵上下或左右拼在一起黑色的块都是联通的,那么最终图形中联通块的数量只有1个

    如果将两个原来的矩阵上下或左右拼在一起黑色的块都不连通,那么最终图形中联通块的数量就是原来图形中黑色块数量$V^{k-1}$

    那么现在的情况就是上下或左右中有一个是连起来成为一个联通块

    其实这里并不需要用平面图上的欧拉定理,由于只有一个方向会产生新的边,并且原来的图只有一个联通块,那么只要数产生的新边$E$有多少个,那么答案就是$V^{k-1}-E$,这样就避免了难以统计的平面个数

    考虑$E$如何得到,设原来的图中这个方向上的变有$a$个

    那么$E_k=aV_{k-1}+E_{k-1}$

    其中$V_k=V_1V_{k-1}$

    直接矩阵快速幂即可

    主要这道题需要把两个特殊情况判掉,否则会陷入恶心的平面个数的统计中去,像这种情况不太多的题目,不要一上手就试图用一个算法把所有情况都考虑进去,可以分开考虑,这样会更清晰一点

    代码

    ARC93F Dark Horse

    首先可以看出某个区间的获胜者,如果这个区间不存在$1$,这个区间的胜者是这个区间的最小值

    那么可以把比赛的过程看作一棵树,那么最终根节点是要为$1$,考虑$1$的路径上每一次比赛的对手,每一个对手都不能是$A$中的数,从下往上依次标深度

    如果直接算是不好算的,考虑容斥

    设$S$为路径上对手为$A$中的深度的集合,设$f(S)$为$S$这个集合的方案数

    答案就是$sumlimits_S (-1)^{S}f(S)$

    考虑如何算出$f(S)$,由于$1$在每一个位置上都是等价的,那么只需要考虑某一个位置出发,可以设$dp[S]$表示哪些深度的路径已经有$A$中的数了,然后从大往小的去转移即可

    代码

    AGC34F RNG and XOR

    跟ZJOI2019开关几乎一样

    首先设$dp[mask]$表示从当前数为$mask$期望要从$0$变化多少次

    可以列出方程$dp[mask]=1+sumlimits_{i=0}^{2^n-1}p_idp[maskigoplus i]$,其中$p[i]$为产生第$i$种操作的概率

    并且$dp[0]=0$

    那么可以设$F$为$dp$的集合幂级数,$G$为$p$的集合幂级数,$H=sumlimits_S x^S$

    那么$F=H+GF+cx^{emptyset}$

    由于$dp[0]$是一个特殊的点,不满足上面的方程式,那么需要单独拿出来待定系数

    设$overline{F}$为$F$的$FWT$的结果其他的同理

    $[x^S]overline{F}(1-[x^S]overline{G})=[x^S]overline{H}+c$

    其中

    $[x^S]overline{H}=sumlimits_T(-1)^{|Scap T|}$

    $=sumlimits_{i=0}^{|S|}(-1)^iinom{|S|}{i}2^{n-|S|}$

    $=2^n[|S|=emptyset]$

    可以发现如果$[x^{emptyset}]overline{G}=1$时当且仅当$S=emptyset$

    那么$c+2^n=0,c=-2^n$

    那么对于$S eq emptyset$

    $[x^S]overline{F}=-frac{2^n}{(1-[x^S]overline{G})}$

    就可以预处理$G$的$FWT$结果,来计算每一个$S eq emptyset$

    那么主要是要求出$[x^{emptyset}]overline{F}$

    由于$dp[0]$的值很特殊是一个已知的常数

    那么考虑$IFWT$的结果

    $0=[x^{emptyset}]F=frac{1}{2^n}sumlimits_S [x^S]overline{F}$

    在右边的和式中提取出那么$[x^{emptyset}]overline{F}$这一项来

    那么$[x^{emptyset}]overline{F}=-sumlimits_{S eq emptyset} [x^S]overline{F}$

    那么求出$F$的$FWT$结果后就直接$IFWT$回去即可

    对于开关那道题来说还需要再推几步

    考虑答案就是$[x^S]F$

    $[x^S]F=frac{1}{2^n}sumlimits_T(-1)^{|Scap T|}[x^T]overline{F}$

    将$emptyset$的情况单独拿出$ans=sumlimits_T(1-(-1)^{|Scap T|})frac{2}{(1-[x^S]overline{G})}$

    $ans=sumlimits_T[|Scap T|\%2=1]frac{2}{1+sumlimits_{iin T}p_i-sumlimits_{i otin T}p_i}$

    $ans=sumlimits_T[|Scap T|\%2=1]frac{1}{sumlimits_{iin T}p_i}$

    这个直接做一个0/1背包即可,顺便记录当前1个数的奇偶性

    代码(AGC34F)

  • 相关阅读:
    CCNET的部分配置使用说明
    用Visual C++实现PDF文件的显示
    开发流程中的可用性
    TCP/IP学习笔记(一)
    使用 Microsoft 实时通信 API 增强多客户端通信
    TCP/IP学习笔记(二)IP网际协议
    DDE热链接
    软件设计中的可用性
    封包技术
    使用MFC开发ActiveX控件
  • 原文地址:https://www.cnblogs.com/huangchenyan/p/14098033.html
Copyright © 2020-2023  润新知