• Codeforces Round #517 体验记


    原文链接 https://www.cnblogs.com/zhouzhendong/p/CF1071.html

    赛前:

    呀,这个 Round #517 必须打啊。

    于是临时改变注意决定打这一场。用小号打。

    比赛快要开始了:

    F5 一下。woc 怎么咕了 5分钟。

    比赛开始了:

    呀,这个 A 我怎么觉得比之前的几个 A 难啊。

    想必是有简单做法的。

    好吧原来是sb题。

    呼呼呼呼敲完代码过了样例,测了一下1e9 的大数据发现挂了。

    连忙改对,心想这总不会fst了吧。

    交一发pp哈哈。

    连忙开 B 。

    发现是水题。

    急忙开写。

    呼呼呼呼写完了,交一发 wa4 。

    瞪着屏幕 10 分钟发现有细节挂了。

    改完一交 pp 了,心想这总不会 fst 了吧。

    急忙开 C 。

    20 分钟过去了,我发现题目看错了……

    然后很快就找到了消除单个1 的方法:

    1000000

    0001001

    0001110

    0000000

    然后想着什么按照 1 的个数大于和小于 n*2/3 来分讨,

    然后算了一下不存在同时消除 3 个 1 的方案时,最多有 n*2/3 个 1 (就是 1-1/2+1/4-1/8+...)

    很开心,觉得快想到正解了。

    于是20分钟过去了,毫无进展。

    然后突然发现只要让边界收缩的速率 >=3 就好了。

    假设区间 [L,R] 是有 1 的,

    如果 a[L]=0 ,那么显然可以 L++

    如果 a[R]=0 ,那么同理 R--

    如果 a[L]=1,a[L+1]=0 ,那么直接取最左边的那一个和第二靠左的那一个以及对应的右边一个就好了。

    如果 a[R]=1,a[R-1]=0 ,那么类似。

    如果 a[L]=a[L+1]=a[L+2]=1 或者 a[R-2]=a[R-1]=a[R]=1 ,那么直接消除连续三个就好了。

    那么剩下一种棘手的情况:

    a[L]=a[L+1]=1,a[L+2]=0,a[R]=a[R-1]=1,a[R-2]=0。

    由于我太菜了,想了10多分钟,才发现可以直接把左右两对用两次消除,这样再加上a[L+2]和a[R-2] 是 0 ,效率刚好是 3 。

    然后发现要来不及了。

    这个真是毒瘤大分讨啊。细节怎么这么多。

    赶紧写啊写。

    100多行写完刚过编译,cf就显示比赛结束了……

    赛后:

    然后又花了几分钟过了样例……

    刚要吐槽一波,又手造了一组数据萎掉了。

    想必是哪里写萎了。

    嗯不管了。

    去水一水qq

    水完回来看看榜

    这 A 怎么这么多人 fst 了

     

    正在为他们默哀之时,等等,我去哪了?

      

    ……

    还好,黄名还保的住。

    然后我突然看到了这个:

    不禁倒吸一口凉气。

    后来——

    我看到了它——

    成功达成成就:

    在一场codeforces contest 里面全部题目fst

    呵呵

    呵呵

    呵呵

    呵呵

    呵呵

    呵呵

    呵呵

    可怕,我是不是该退游一些日子了。 

     

    还好是小号。

  • 相关阅读:
    Jenkins pipeline基本结构
    接口测试框架httprunner使用自定义extentreports报告模板遇到的问题小结
    python3中扩展字典类实现用点访问属性
    python3系列五可迭代对象、迭代器和生成器
    vue.js-组件嵌套
    使用Vue-CLI3.x进行vue.js环境搭建
    python系列四反射机制
    vue.js环境搭建踩坑记
    python系列三推导式
    python系列二filter()、map()和reduce()
  • 原文地址:https://www.cnblogs.com/zhouzhendong/p/CF1071.html
Copyright © 2020-2023  润新知