zoukankan      html  css  js  c++  java
  • 09-03 NOIP模拟测试36

    期望得分:60+64+0

    实际得分:0+32+0

    rk33

    又炸了,T1暴力细节不到,T2区间dp填表有bug,T3rand数

    这几次考试在T1上花的时间都太多了,觉得自己能想到正解然而磨了好久只能打暴力是真的难受,还是注意下取舍吧。暴力未尝不可更优。

    A. 字符

    这题暴力剪枝可A,正解没看太懂,找时间补下。

    B. 蛋糕

    区间dp,考试的时候打完发现大样例不能过,然后举了个“反例”,脑抽以为状态不能保持全局最优。

    7 5 2 6 10 inf

    从2开始的最优策略:我 2->5->inf

    我错误地认为[3,4]会错误的贪到[3,5],然而[2,4]的情况是有保留的。

    打的填表稍绕了下就挂了?

    还是自己对dp的理解不透啊,不明白如何证明区间dp的正确性。

    考后想了下发现其实是最后一次更新会和自己比较,然而我没有判入相等的更新,于是挂了,加了两个字符AC。。。

    设dp[i][j],表示[i,j]的蛋糕都被拿完,r-l+1的奇偶决定是谁行动。

    转移就很显然了

    我:dp[i][j]=max(dp[i+1][j]+a[i],dp[i][j-1]+a[j])

    她:dp[i][j]=max([a[i]>=a[j+1]]*dp[i+1][j],[a[j]>=a[i-1]]*dp[i][j-1])

    也可以记忆化搜索,比较好写。

    C. 游戏

    前两题把自己搞到心态爆炸,T3没有留时间。

    后来发现T3还算可做。

    这题需要几个性质:

    • 一个莉露露至多行动一次。假设我在隔开的两段用了同一个莉露露,相当于这个莉露露走了完整的C,那显然可以用第一个直接拿着人过来。
    • 不存在一个莉露露带着人走了一段,然后又把人抛出去的情况。

    如果C<A,那全程拿着走更优

    如果C>A,只要选择抛出去,就会增加B,之后用A走更优。如果中途再抛显然不优。不抛也是可能的,即Cx<Ax+B

    考虑整个过程:

    一定是一个莉露露拿起由岐,然后选择抛出给下一个莉露露或者带着走。重复这个过程

    之后的处理类似传送门那题。

    由岐的移动可以抽象为不断召唤莉露露抛出或单步的过程。把这些选择放到由岐所在的(x,y),建对应权值的边跑dij即可。

    不同于传送门的是有不同的移动花费和抛出直线的限制,抛出过程不能转弯。

    定义(x,y,0/1/2)表示在点(x,y),状态0南北滞空,1东西滞空,2被携带。

    d[x][y]的预处理与传送门那题相同,把每个莉露露放进队列开始bfs,第一次更新为最优。

  • 相关阅读:
    深入探讨多态性及其在Java中的好处
    可扩展的Java线程池执行器
    Java并发:线程限制
    CF集萃3
    CF1151F
    [欧拉路]CF1152E Neko and Flashback
    LOJ#3119 随机立方体
    UOJ#449 喂鸽子
    CF1140F
    洛谷P5071 此时此刻的光辉
  • 原文地址:https://www.cnblogs.com/hzoi-yzh/p/11461650.html
Copyright © 2011-2022 走看看