• Atcoder 泛做


    AGC035C
    如果 n 是二次幂答案肯定是 No,别的情况构造一个以 1 为中心的菊花,挂成若干像 2-3-1-2-3,4-5-1-4-5 的链,n 是偶数把 n 找个地方挂上去就行

    AGC035D
    用 $ f_{l, r, L, R} $ 表示删掉 $ [l, r] $ 这个区间中的数,被加到左边的数的系数是 L,被加到右边的数的系数是 R 的最小权值,粗略估计一下状态数是 $ 2^n cdot n^2 $ 的,最终答案是 $ f_{2, n - 1, 1, 1} + a_1 + a_n $

    AGC035F
    考虑怎么样的情况答案会被算重

    • 第 i 行前 j 个数加 1,第 j 列前 i - 1 个数加 1
    • 第 i 行前 j - 1 个数加 1,第 j 列前 i 个数加 1

    我们只需要让答案中不存在某一种情况即可,变成计算不存在 $ a_i = j, b_j = i-1 $ 的两个序列的方案数,容斥即可

    AGC029F
    考虑从每个集合到集合内的点连边,容易发现图形成一个二分图,如果有解一定可以找到一个大小为 $ n - 1 $ 的完美匹配,对找到的生成树找一个根,每个集合是一条边,可以匹配边的两端点中深度大的点。找到匹配后随便找个方案即可,如果没找到方案意味着二分图不连通

    AGC037D
    将一个数字重标号成最后所在的行的编号,我们要做的事情就是在第一次操作后使得每一列都是一个 1 ~ n 的排列,第二次操作将每个数放到该到的行去,第三次操作将每个数放到该放的行去
    考虑每次把一列变成一个 1 ~ n 的排列,如果把第 i 行向这行能放的数连边,相当于找一个最大匹配,根据 hall 定理一定存在这个最大匹配,构造一下就行了

    AGC020E
    实现一个函数 solve(a) 表示求 a 这个 01 序列的答案,每次找一个子区间划分成 >= 2 个区间递归下去求方案数,相当于把这个子区间变成了 (A*x) 的形式继续做 A,dp 下就行了,递归要记忆化,合法的区间个数上界是 $ n^2 log(n) $ 个,复杂度 $ O(n^3 log(n)) $

  • 相关阅读:
    JVM运行时数据区--堆
    ES检索服务搜索结果高亮
    SpringBoot 设置编码UTF-8
    response.setContentType()的作用及参数
    将 vue.js 获取的 html 文本转化为纯文本
    SpringBoot读取properties文件配置项
    关于Java的编译执行与解释执行
    Java沙箱安全机制介绍【转载】
    JVM运行时数据区--本地方法栈
    JVM--先说本地方法接口
  • 原文地址:https://www.cnblogs.com/LJC00118/p/13646170.html
Copyright © 2020-2023  润新知