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

    A. 数学

    利用本题的特殊性质,可以得到如果 $n$ 为奇数,那么答案为 $(ab)^{frac{n+1}{2}}$ ,对这个玩意平方一下即可发现是对的。

    对于 $n$ 为偶数,可以把 $2$ 全都提取出来,然后对剩余的部分取得一个解。

    然后不断缩小 $2$ 的次数以迭代,当缩小为 $2^0$ 的时候可以直接得到解。

    很妙的一步是当 $y_0^{2^w} != -1$,因为 $y_0^{2^{w+1}} = 1$,有 $(y_0^{2^w}-1)*(y_0^{2^w}+1)=1$。

    于是可以通过上面两个值,把模数进行分解的效果,以继续递归。

    B. 灌水

    考虑每次给最大的木板定位,那么每次的贡献就是新增的区间大小,所以一个显然的想法是维护区间的左右端点。

    然后发现这个东西是没有必要的,我们最终只关注某个值是否存在。

    对于每一种方案,都可以随意地构造出一种左右端点来,权值是与左右端点无关的,所以只要维护区间长度就行了。

    写个 dp ,发现权值只有0/1,转移就对应着位移和或运算,显然用 bitset 来优化。

    随便整个类似前缀和的东西,复杂度就做到 $O(frac{n^3l}{w})$ 了。

    发现权值比个数小得多,所以对每个权值考虑一次即可做到 $O(frac{n^2l^2}{w})$。

    C. C

    奇怪的数据范围,加上特别的只有两个质因子的限定,很明显是在提示网络流。

    然而没想到可以这样分配二分图的两个点集。

    两个组点集别表示在第一个质数中的组和第二个质数中的组,组的大小分别是 $p_1,p_2$。

    删掉叶片不好处理,可以考虑保留叶片。那么每个已经被删的叶片所在的组显然不合法。

    每个点对应着两个组,这是该二分图的边,这两个组无法同时被保留。

    然后问题就是二分图的最大独立集,有最大独立集=全集-最大匹配集。

  • 相关阅读:
    VHDL硬件描述语言(三)——基本数据对象和数据类型
    VHDL硬件描述语言(二)——子程序
    VHDL硬件描述语言(一)——基本结构
    C#类
    C#基本语法
    C#的简单数据类型
    C#与.NET
    ARP
    IPv6
    以太网
  • 原文地址:https://www.cnblogs.com/skyh/p/12543338.html
Copyright © 2011-2022 走看看