zoukankan      html  css  js  c++  java
  • CF1017B

    可以发现,若我们要得到一个新的 (a) 满足要求,必须要至少完成以下两种操作之一。

    • 若在第 (i) 位上,(a)(1)(b)(0),那么将 (a) 这一位变为 (0)

    • 若在第 (i) 位上,(a,b) 均为 (0),那么将 (a) 这一位变为 (1)

    我们设 (a)(x)(1)(y)(0)。再设有 (z)(a|b=0) 的位置,(k)(a=1,b=0) 的位置。

    那么,将 (a) 中一个 (0) 填成 (1)(x) 种方案,反过来为 (y) 种。

    所以我们可以将上面操作的方案数算出,分别是 (ky)(zx)

    又因为某些情况同时包含了这两种操作,会重复计算,所以要减去。

    答案就是 (ky+zx-kz)

  • 相关阅读:
    UVA
    [CQOI2018] 社交网络
    UVA
    51nod 1314 定位系统
    51nod 1211 数独
    51nod 1392 装盒子
    51nod1253 Kundu and Tree
    51nod1313 完美串
    51nod1039 x^3 mod p
    51nod1369 无穷印章
  • 原文地址:https://www.cnblogs.com/KnightL/p/15480899.html
Copyright © 2011-2022 走看看