• 模拟29 题解


    A. 壕游戏

    不会做,以为是贪心。

    结果发现贪心是错的。

     

    正解是网络流中的费用流。

    将每条边$i$拆为$c_i$条边,

    将所有边建出来,每条边的费用为$a_i*j+b_i$,$1<=j<=c_i$。

    然后可以直接跑费用流。然而复杂度$O(mk^2)=O(跑不过)$,死了。

    考虑优化一下。

    考虑到实际上并不需要这么多边,因为起点的流量最多为1,

    且在网络流中,每个点在一条增广路中只会出现一次。

    每一条边直接被拆为$c_i$条边是没有意义的。

    只在边$i$的第$j$个副本被需要的时候,也就是前面的$j-1$个副本都被使用完的时候,新建这条边。

    每条增广路上最多有n个点,也就是最多拓展n条边。

    总复杂度$O(sum limits_{i=1}^{k}K*(m+i*n))=O(K(mk+nk^2))$,

    K为spfa的常数。

    加上网络流的玄学复杂度,它变为了$O(跑得过)$。

    B. 密码

    当只有一个匹配串,就是简单的数位dp。

    对于多个匹配串该怎么处理?

    考虑字符串匹配,对于同一模式串,多匹配串的处理方式。

    AC自动机。

    然后就完了。

    设$dp(i,j,v)$表示到计算到第i位,符合当前匹配状态的AC自动机上节点编号为j,已经匹配到了v个密钥。

    当v大于k时,直接设为k。

    照例计算r的方案减去l的方案。

    C. 大新闻

    区间K大

    第一眼是数状数组套权值线段树。

    看了一会发现维护的是一个只在边界修改

    主席树裸题。

  • 相关阅读:
    机器学习——逻辑回归(Logistic Regression)
    [BUUCTF]PWN4——pwn1_sctf_2016
    [BUUCTF]PWN1——test_your_nc
    [BUUCTF]PWN2——rip
    vuex状态管理详细使用方法
    微信小程序入门
    条件渲染vue
    vue-cli安装方法
    JavaScript逻辑运算符
    JavaScript的基本介绍
  • 原文地址:https://www.cnblogs.com/skyh/p/11395564.html
Copyright © 2020-2023  润新知