zoukankan      html  css  js  c++  java
  • #10 [AH2017/HNOI2017]大佬

    题解:

    题意看上去挺复杂的

    分析一下就能发现自己的自信是没啥用的

    只要随便dp一下看看最多能有多少天不使用增加自信

    然后问题就变成了

    求C1+C2+k=C

    然后发现C有10^8

    显然枚举C1是不行的了

    那么考虑到满足条件的C1,C2应该不会太多

    可以考虑先把它们搞出来

    这个只需要hash+bfs就可以了

    令f[i][j]表示当前生成了前i个数,其中伤害是j,要使用的最少天数

    然后发现伤害j最后只有6e5左右

    首先放大招如果0,1次的话就乱搞,下面考虑两次的

    一个比较暴力的方法就是

    先枚举k (1---100) 然后再枚举C1

    这样是6e5*100*20 有点高吧

    考虑一下不去枚举k

    我们设两次伤害分别为x1,x2

    那么要满足x1+x2<=CC

    另外,d[x1]+d[x2]+(c-x1-x2)>=D

    对于第二个式子 写成 (d[x1]-x1)+(d[x2]-x2)>=D-CC

    然后就维护一下最小值就好了

    我并不是很理解网上为什么有人叫做单调队列。。。它的取值范围是只增不减的啊。。

  • 相关阅读:
    【linux之web服务器apache】
    【linux工具之sed实例】
    【linux工具之strace】
    【linux工具之iptables 脚本】
    【linux工具之iptables】
    【Linux抓包工具之tcpdump】
    【抓包工具之wireshark】
    【Linux 基础服务之DNS】
    c语言
    sf
  • 原文地址:https://www.cnblogs.com/yinwuxiao/p/8969858.html
Copyright © 2011-2022 走看看