zoukankan      html  css  js  c++  java
  • csp-s模拟102

    T1:
      考虑肯定要断环成链,但从什么地方断较好?
      发现如果从最大值断开的话,前面的都不会跨过边界(好!)
      那么我们就可以做一个类似音乐会的等待的东西就行了

      当然还需要一些特判:如果一个数它是后缀max而不是前缀max,那么它和最大值就会有一个贡献且之前还没有算到,加上就好了
     
    T2:
      有一个很好理解的强悍做法:@DeepinC
     
    T3:
      枚举删某个点的复杂度肯定是去不掉的,考虑如何优化计算删一个点答案的复杂度

      发现最暴力的每次删掉一个点重跑一遍有很多冗余
      考虑可以先预处理出从某个开始点到任意点i的最长路(f_i),任意点i到某个结束点的最长路(g_i)

      考虑按照拓扑序枚举删除的点y
      开始时将所有(g_i)加入数据结构
      每次先将所有连向该点的边(x,y)产生的最长路(f_x+dis_{x,y}+g_y)删除(同时需要删除(g_y))
      再将所有该点连出的边(y,z)产生的最长路(f_y+dis_{y,z}+g_z)加入(同时需要加入(f_y)

      可以使用可删除指定元素堆或权值线段树解决

  • 相关阅读:
    java 构建一个简单的菜单
    java JSplitPane
    java 使用ActionListener监控
    java 显示单选按钮
    工作 激情
    明天会更好
    记录
    现在
    嘿嘿
    书籍 知识
  • 原文地址:https://www.cnblogs.com/Gkeng/p/11842365.html
Copyright © 2011-2022 走看看