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

    T1:
      容易发现每个数是独立的
      实际上是要求(ax+by=c)的解中(|x|+|y|)的最小值
      大佬们都是分情况讨论直接算出最小值
      而蒟蒻我不会算,所以就用了一个诡异的方法:
      先简单的取模找到接近最小值的地方,容易发现(|x|+|y|)大概是个单谷的函数
      所以可以暴力左右移动xy找到谷底
     
    T2:
      考虑按照a排序,设计(f_i)表示考虑前i个数对且选了第i个数对的最大权值和
      首先容易想到转移:(f_i=max_{a_j leq b_i} { f_j }+w_i)
     
      发现样例都过不了,考虑哪里少算了
      考虑无法转移到i的一段中有哪些也可以加入序列
      发现若点k满足(a_kgeq b_i && b_k geq a_i)
      那么点k就可以随便排在i的后面,且不会影响序列的(max { a })
     
      那么问题就转换为:
      一个序列,每个点都有两个值(key,val),如何快速求一段区间中$sum_{key_i geq C} val_i $
      主席树即可
     
    T3:
      考试时想到二进制拆分跑多源最短路,但复杂度好像不太对
      实际上只需要跑一遍dijkstra多源最短路,然后记录每个点的最短路是由哪个特殊点拓展的
      最后枚举每条边用两端点的信息更新答案即可

  • 相关阅读:
    (转载)构建public APIs与CORS
    SpringMVC 参数注入
    java删除文件夹
    idea 自动提示生成 serialVersionUID
    JSP自定义tag
    gradle中使用嵌入式(embedded) tomcat, debug 启动
    spring in action 4th --- quick start
    Date, TimeZone, MongoDB, java中date的时区问题
    spring boot 添加拦截器
    HTTP status code
  • 原文地址:https://www.cnblogs.com/Gkeng/p/11838871.html
Copyright © 2011-2022 走看看