zoukankan      html  css  js  c++  java
  • 省选模拟46 题解

    A. 俄罗斯方块

    一道很神奇的 bitset 题。

    考虑维护每个格子最上面属于哪个块,这个东西可以用一个 set 来维护每个连续段,操作方法类似珂朵莉树。

    对于每次操作,直接用 set 遍历每个有交的连续段,询问并取 $max$,以得到当前的高度,然后进行覆盖操作。

    所以现在的问题是,有一个块 $b$ ,起点为 $s_b$,一个块 $a$,起点为 $s_a$,问落下后的高度。

    容易发现并不关注具体的 $s_a,s_b$ ,只关注 $s_a-s_b$。

    然后考虑一个暴力做法,枚举答案,然后类似卷积的再枚举每一层,bitset 判断是否有交。

    同时,对已经计算过的三元组 $(id_a,id_b,s_a-s_b)$ 进行记忆化操作。

    这样的话总复杂度不超过 $O(frac{S^2}{64})$ ,其中 $S$ 表示总面积,因为每个点对显然只被计算了一次。

    但是有个小问题,当块 $a$ 或块 $b$ 的宽度小于 $64$,导致这个 $64$ 除不掉了,所以暴力计算。


    B. 能力强化

    与 uoj 喂鸽子很像。

    大概的思想是,将全部覆盖通过 $Min-Max$ 容斥转化为覆盖一个。

    然后发现每个物品是一样的,所以只考虑覆盖的个数乘上组合数即可。

    这样的话可以设 $g_{i,x}$ 表示前 $i$ 个物品,用了 $j$ 步,然后一个都没覆盖成功的方案数。

    $g$ 数组的求法先 dp,然后用一个简单的 $EGF$ 就可以了。

    有了 $g$ 数组,可以通过枚举第 $i+1$ 个物品用了多少步填满,计算 $i+1$ 个元素中覆盖了一个的期望。

    C. 将军棋

    毒瘤提答题。

  • 相关阅读:
    在Spring Boot中使用数据库事务
    Data Consistency Primer
    在Spring Boot中输出REST资源
    Android开发——进程间通信之Messenger
    初识在Spring Boot中使用JPA
    设计模式——享元模式详解
    回首2016,展望2017
    [转]OpenStack Keystone V3
    [原]Openstack之identity server(keystone)
    [原]secureCRT 改变显示宽度
  • 原文地址:https://www.cnblogs.com/skyh/p/12506989.html
Copyright © 2011-2022 走看看