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

    A. table

    首先考虑怎么暴力 dp,然后发现难点在于怎么知道不受影响的格点的个数。

    其实特殊之处在于碰到矩形边界之后没办法计数,所以考虑枚举在哪个位置碰到了矩形边界。

    然后发现每次转移是类似的,只要求 $a$ 次向下走,$b$ 次向右走,$c$ 次在边界上走能贡献的总的权值。

    其实等价于求所有满足 $x_1+...+x_a+y_1+...+y_b+z_1+...+z_c=S$ 的序列的权值 $x_1*...*x_a*(y_1+1)*...*(y_b+1)$ 的权值和。

    其中 $x,y,z$ 的取值都可以是 $0$ ,然而容易发现如果 $x$ 在取值为 $0$ 的时候不产生贡献,可以钦定取值至少为 $1$ 。

    然后把 $y+1$ 这个东西转化一下,给等号的右边加上一个 $b$ ,现在的权值就变成了 $x_1*...*x_{a+b}$,这个可以直接用插板来计算。

    然后发现其实是左右分别插板,然后组合数的形式是 $sum limits_{i=-infty}^{infty}inom{a+i}{b}inom{c-i}{d}$。

    这个东西可以转化为在枚举集合的划分点,所以组合数就等于 $inom{a+c+1}{b+d+1}$,然后只要考虑一下没有被经过的点的贡献、经过的不同路径产生的方案数的贡献就好了。

    B. remove

    直接用完全图的话,没有办法进行 dp。

    然后有这样一个结论:原题等价于求最大独立集。

    证明的话可以考虑首先答案是要大于等于最大独立集的。

    然后把最大独立集中的每一个元素都先选中,可以考虑如果加入两个不在最大独立集中的元素之后不能形成团,那就说明新加的两个元素之间没有边。

    如果这样的话,可以用这新加的两个元素替换原最大独立集中的元素,那么最大独立集可以扩大,就不是最大独立集。

    可以考虑把每个符卡都按照左上角的坐标排序,然后最大独立集是不难 dp 的。

    转移的条件就是两个右端点分别小于两个左端点。

    因为上方的左端点是递增的,可以用堆来动态插入可以进行转移的点。

    下方的偏序关系用树状数组维护即可。

    C. road

  • 相关阅读:
    EventHandler 与常见的.Net预定义委托
    Consistent Hashing算法及相关技术
    全序, 分布式一致性的本质
    Paxos Made Simple
    Strong Consistency, 强一致性技术概述
    Chubby lock service for looselycoupled distributed systems
    AntiEntropy Protocols
    Mesos: A Platform for FineGrained Resource Sharing in the Data Center
    Spark A FaultTolerant Abstraction for InMemory Cluster Computing
    Vector Clocks, 时间向量
  • 原文地址:https://www.cnblogs.com/skyh/p/12803271.html
Copyright © 2011-2022 走看看