• 省选模拟56


    A.取石子游戏

    题意:n堆石子,第(i)堆有(a_i)个,可以删除掉为d的倍数个数的石子堆,求后手必胜的删除方案数。(n<=5e5,d<=10,a_i<=1e6,sumlimits_{i=1}^n a_i<=1e7)
    首先是nim博弈的结论:存在后手必胜的充要条件为(a_i)异或和为零
    对于(n<=50,a_i<=10000),设(f[i][j][k])表示考虑了前(i)堆石子,删除堆数(%d=j),未删除的堆xor值为(k)的方案数
    此时没有用到(sumlimits_{i=1}^n a_i<=1e7)的条件
    (a_i)按降序排序,那么每次不小于(a_i)最高位+1位的k都不可能贡献答案,这样的话复杂度为(O(nd imes cnt[2^{i-1},2_i-1]2_i)),不会超过(O(ndsum a_i))

    B.路径计数

    题意:n个点m条边的有向图,q次询问s->t走d条边且s只在起点t只在终点经过的方案数。(n<=100,d<=50,q<=5e5)
    暴力的话直接dp(f[s][i][t][d])表示起点s终点t现在在i走了d条边的方案数,然后统一回答。
    限制只有两个,可以考虑容斥。
    (f[i][j][k])表示走恰好k步(i->j)且不经过(i,j)的方案数
    (g[i][j][k])表示恰好走k步(i->j)的方案数,这个没有限制直接枚举起点拓展终点dp,复杂度为(O(n^3d))
    (h[i][j][k])表示恰好走k步(i->i)且不经过(j)的方案数
    考虑如何求答案(f)
    用总方案数-不合法的,前者显然是g,后面的分类为第一个不合法为i或j
    (f[i][j][k]=g[i][j][k]-sumlimits_{d=1}^{k-1}h[i][j][d]g[i][j][k-d]-sumlimits_{d=1}^{k-1}f[i][j][d]g[j][j][k-d])
    (h[i][j][k]=g[i][j][k]-sumlimits_{d=1}^{k-1}h[i][j][d]g[i][i][k-d]-sumlimits_{d=1}^{k-1}f[i][j][d]g[j][i][k-d])
    同时注意(i=j)的情况会被多减一次。

    C.方格操作

    题意:(n imes m)的01方格图,定义操作为把1的所在行和列异或一,本身变为0。每次对图中所有1同时操作,权值为1的个数,直到图中无1。(n,m<=1e5)
    定义(f[i])为i行1个数的奇偶性,(g[i])为i列同理
    那么((i,j))一轮操作后会变成(f[i] xor g[j])
    因为只关心每个格子所在的行和列有多少1,而不关心具体位置,交换行和列对答案没有影响。
    于是把(f[i]=0)的放上边,(g[j]=0)的放左边,会形成4个块,每个块要变化产生的值都是相同的,将问题的规模缩小到了(2 imes 2),除了初始方格图只有左下和右上两个块会有贡献,同时可以再次按照此规则移动行列,若不循环则最多(2^4)次。
    现在的问题在于求出初始图的贡献和(f[i],g[i]),后者差分即可,前者用扫描线+线段树可以解决。

  • 相关阅读:
    数据中心相关
    VUE对象方法
    statefulset有状态应用管理
    图片无损放大工具
    BBR vs BBRplus vs BBR2 一般网络速度对比
    AlmaLinux、CentOS、Rocky Linux 8 更新到 Linux 内核
    vuedraggable拖拽生成页面简单Demo
    微服务基础(一)介绍及选择架构
    生成Id
    P6348 [PA2011]Journeys
  • 原文地址:https://www.cnblogs.com/hzoi-yzh/p/12589709.html
Copyright © 2020-2023  润新知