zoukankan      html  css  js  c++  java
  • 模拟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大

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

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

    主席树裸题。

  • 相关阅读:
    Python面向对象-类成员
    python面向对象-继承
    Linux 静态和动态添加路由
    Linux 添加虚拟网卡
    centos7源码包安装Mongodb,并设置开机自启动
    centos7配置静态ip地址
    Python开发【前端篇】JavaScript和Jquery
    Python爬虫【解析库之pyquery】
    Python爬虫 selenium
    Python爬虫【解析库之beautifulsoup】
  • 原文地址:https://www.cnblogs.com/skyh/p/11395564.html
Copyright © 2011-2022 走看看