-->

比赛训练记录

打好每一场比赛,做回每一场比赛!

List

  • 2017.11.25 CodePlus2017 Div.2

  • CodePlus2017 Div.2

    260/400

    Conclusion:
    这场比赛打的有点失利
    第二题当时想着很快要切掉 然后又被服务器影响了 心态大崩 其实第二题是细节题 我不是很熟悉的 当时对拍了还有错 所以就很尴尬随便调一下才过的
    但是最后第二题没有打满分 原因数组开小了 因为是想着是手速场就没想到要去卡自己空间什么的
    第三题很快就切掉了很舒服
    第四题算是比较失败的 自己一看大概就知道是什么题 但是有个地方想偏了 导致没写这一题

    Solution:
    晨跑:longlong + lcm = AC
    汀博尔:明显这道题就是要看每棵树到达限制的时间 然后从小到大的排按时间一个个枚举的嘛
    因为每棵树会长高 所以我们要记录达到限制的树增长的速度 而且达到限制的树在当前的总高度 大于需要就跳出
    找爸爸:简单的二维一边推dp 定义F[i][j][0/1][0/1] 表示当前匹配到A的第i个和B的第j个 然后最后是不是空格
    可做题:这道题当前好像想的方向不是很好
    首先可以想到按二进制位处理 剩下的取前缀和肯定是这样的:
    xx01xx010xx101
    考虑怎么使的1的数量尽量的少
    1.连续的一段已知数字一起算
    2.如果前面有一个空位 则可以让这一段的0和1给翻转
    3.翻转这一段的0和1只需要1的花费
    当时有一个地方想错的是:
    假设两段之间有两个或以上的x
    011xxx110
    那么肯定是第一个x把前缀的1都消除掉花费为0 第三个x来调整后面的一段花费为1
    那么如果只有一个x的情况呢
    011x110
    是不是就很尴尬了啊 因为这样有可能不能同时满足上面的两个要求
    其实不用的 如果前缀为1的话恰好可以留下来调整后面的一段 中间也是花费1
    如果不用调整下一段 那么花费也照样是0
    搞定!
    处理的时候看看是不是第一个位置就好了