• csp-s模拟81


    T1:
      数据范围显然状压,但考试时没有想到,打了个爆搜拿了70分
      记录上行点亮状态和操作状态,枚举这行的操作状态进行dp就好了
     
    T2:
      计算方案数:
      考虑按val从大到小向序列中插入,那么之后的元素对当前元素就没有影响
      于是答案就是(prod _{i=1}^n min(i,key_i + sum_{val_i}))
      其中(sum_{val_i})表示在(i)之前的等于(val_i)的元素个数
     
      构造方案:
      贪心的选择,每次选择能选的点中字典序最小的,然后将所有未选的且val比它小的点的key减1
      当某个点的key减为1的时候,我们选择的点还应该满足val小于等于这个点
      所以可以对val排序,用线段树维护字典序最小的点
      区间key值减1,当key减到1时,将该点的val插入一个multiset中表示限制
      当选择该点之后再在multiset中删除该权值
     
    T3:
      随机化可过……
      正解:
      考虑设(dis_{i,j,k})表示从i到j经过k条x边的最短路,跑个分层图就可以算出
      那么问题就转化为方程:
    (min{dis_{1,i,a}+a*x}+min{dis_{i,n,b}+b*x}=min{dis_{1,n,c}+c*x})
      是否有整数解
      发现这三个min实际上是三个由一次函数构成的凸壳
      那么我们可以维护三个凸壳(每段被哪个一次函数控制)
      然后用三个凸壳的拐点划分区间,即可保证在每个区间内这三个函数都是直线的形式
      那么就可以对每个区间解方程,看是否有在这个区间内的整数解即可

  • 相关阅读:
    vim
    Linux 软链接和硬链接
    常用命令
    linux 二级目录结构
    关于bash shell的理解
    虚拟机网络模式
    安装虚拟机
    date 命令
    使用3种协议搭建yum仓库
    ubuntu update时发生错误
  • 原文地址:https://www.cnblogs.com/Gkeng/p/11809809.html
Copyright © 2020-2023  润新知