• 杂题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=) 某个数时的方案数,这是一个定值,可以预处理

  • 相关阅读:
    四则运算2实验及表格
    四则运算2初步构思
    2015.3.6的程序实践
    对《梦断代码》的阅读计划
    林锐——软件思想阅读笔记2
    二维数组最大子数组溢出问题
    循环数组求最大子数组
    电梯调度需求分析调研报告
    二维数组求最大子数组
    四则运算实现用户输入答案并统计正确数量
  • 原文地址:https://www.cnblogs.com/Juanzhang/p/12378579.html
Copyright © 2020-2023  润新知