zoukankan      html  css  js  c++  java
  • 杂题20200228

    LOJ2155 「POI2011 R1」同谋者 Conspiracy

    给定一张无向图,将 (n) 个点分为两个点集,使得其中一个是团,另一个是独立集,求方案数

    (nleq5000)

    假设已经求出了一组合法解,解集一定由该合法解 把团中一个点放到独立集、把独立集中一个点放到团、交换团与独立集中的一个点 这三种情况构成

    构造合法解可以 2-SAT 。若两点 (u, v) 之间有边,看作两点不能同时放入独立集;否则,看作两点不能同时放入团


    LOJ2156 「POI2011 R1」棒棒糖 Lollipop

    给一个由 (1, 2) 构成的序列,多次询问是否有一段区间和为 (k) ,并求一组解

    (n, qleq10^6)

    假设当前有区间 ([l, r]) ,和为 (sum) ,若 (l<r) ,一定可以构造出 (sum-2)

    证明:若 (a_l, a_r) 两数中有一个是 (2) ,将 (2) 减去即可;否则,将 (l, r) 都向内挪一位

    因此找到长度最大的和为奇数/偶数的区间,并记录答案即可


    URAL1441 From the History of Gringotts Bank

    给定一张无向图,将边集拆分成若干条路径(不要求是简单路径),使得每条边恰好被经过一次,最小化路径数量,输出方案

    (n, mleq2 imes10^4)

    当一个连通块内只有 (0)(2) 个度数为奇数的点时,欧拉路径即是答案

    考虑将连通块中的度数为奇数的点两两匹配,把剩下的边用欧拉回路插到答案里,总共使用 (frac{度数为奇数的点}{2}) 条链,可以发现这样是最优解

    匹配度数为奇数的点可以找一棵生成树,从底向上匹配,时间复杂度 (O(n+m))


    URAL2047 Maths

    构造一个长为 (n) 的整数序列 (a_i) ,满足:

    1. (a_iin[1, 300])
    2. (forall kin[2, n], displaystylesum_{i=1}^ka_i) 有恰好 (a_k) 个约数

    (nleq10^5)

    由于一个合法序列的前缀也一定是合法序列,可以从权值和入手,记 (f_i) 为序列和为 (i) 时的最大合法长度,易知转移为 (f_i=f_{i-d(i)}+1) ,其中 (d(i))(i) 的约数个数

    通过打表可以发现 (n=10^5) 时需要用到的值域不会超过 (1.6 imes10^6) ,暴力 dp 即可


    URAL1310 ACM Diagnostics

    定义一个长为 (L) 的整数串是合法的,当且仅当:每个元素值域在 ([1, M]) ,且元素和是 (K) 的倍数

    求字典序第 (N) 的合法串

    (Lleq100; M, Kleq50)

    使用高精,二分之后暴力数位 dp ,会 TLE

    确定了前缀的若干位后,实际上只关心剩下的位置中,和(mod K=) 某个数时的方案数,这是一个定值,可以预处理

  • 相关阅读:
    给Array本地对象增加一个原型方法,它用于删除数组条目中重复的条目(可能有多个),返回值是一个包含被删除的重复条目的新数组以及删除了重复条目的原数组。
    mysql批量替换某个字段的值!
    LInux常用命令
    盒模型布局
    box-sizing -- 盒模型
    vue中使用svg字体图标
    字体图标
    在线字体
    Java QQ邮箱发送邮件
    Java 对全局用户是否登录验证
  • 原文地址:https://www.cnblogs.com/Juanzhang/p/12378579.html
Copyright © 2011-2022 走看看