• 51Nod 算法马拉松15 记一次悲壮而又开心的骗分比赛


    OwO 故事的起源大概是zcg前天发现51Nod晚上有场马拉松,然后他就很开心的过去打了

    神奇的故事就开始了:

    晚上的时候我当时貌似正在写线段树?然后看见zcg一脸激动告诉我第一题有九个点直接输出B就可以A。。

    然后之后zcg以奇怪的二分方式发现了如何A掉第一题的第十个点(我记得貌似是什么第5000个数等于511?

    OwO 就这样没有任何思考含量全凭骗分黑科技过掉了第一题 OwO

    然后zcg打开了第二题,发现第二题样例有点问题,然后就发了个帖子,直接去看第三题了

    我去瞅了一眼,发现这不是gcd array的裸题么?然后zcg去粘了一发那道题目,然后改了改就交了

    结果悲壮的T了,我们惊奇的发现貌似gcd array原来O(n*sqrt(n)*log(n))的做法过不去

    出去跑步回来zcg开始推式子,推了不到20s他扔下笔说这不是思博题么,然后就开始写

    我凑过去一看发现把gcd(i,j)=1莫比乌斯反演掉就是O(n*sqrt(n))的复杂度了

    大概在要回宿舍的时候A掉了

    第二天起来发现第二题题面改了(其实我是很久以后才知道这件事情的,想原来的题面想了好久。。

    上午考了场自己被卡常滚粗的考试,没有顾得上51Nod

    下午发现一大批人都过了好多题,zcg发现E题貌似是个数据结构,然后就去搞E了

    我下午一直在改考试题,貌似zcg和溪哥化模型化了很久,然后溪哥过来给我说了一道我看上去跟E题完全没关系的题目

    我当时大脑非常懵逼,看着这个题目YY了一下分块,发现好难维护,然后开始口胡要离线

    口胡完离线之后发现还是好难维护,然后我又开始口胡要维护个树状数组什么的bulabula

    貌似圆满以非常诡异的O(n*sqrt(n)*log(n))的时间复杂度解决了这个问题

    之后貌似zcg和溪哥又讨论了一些关于字符串的奇怪的问题,最后貌似得到了奇怪的但是非常优秀的做法?

    我在旁边一直说什么n<=50000,O(n*sqrt(n)*log(n))根本不虚的话来给zcg加油助威

    zcg吐槽了一句好难写之后开始码码码,容我先回想一下他们的做法:

    貌似是要建trie,建广义后缀自动机,搞出parent树,然后要拉出一棵主席树,之后做一个奇怪的分块,还要把所有询问离线。。

    (这模型化的6的不行啊

    不过zcg码力超群,这么坑爹的做法他飞快的码完了,在WA了几发之后对着对拍改了貌似两个错误就A掉了这道题目

    最后听zcg说写了8K。。

    下午lyc发现第二题题面改掉了,想了想,发现了一个非常有用的性质

    然后写了一发数位DP成功A掉了B题

    随后zcg也相继A掉了B题

    发现排名貌似不低,再A掉一道题就有奖金了,一阵激动

    然后就回宿舍碎觉了

    第三天,也就是今天,zcg发现有一大波人排在上面

    F题貌似除了dls没人能A,我们决定去搞D题

    窝上午头痛欲裂,写了一道CF的C之后就已经完全支撑不了自己的意志了

    完全想不了题,一想题就头疼

    然后就专心去看D题,准备口胡一些奇怪的做法

    n<=35?貌似可以meet-in-the-middle?

    想了想貌似信息合并不可做

    突然想到之前做过一道数位DP带上LIS的东西的状态压缩的做法

    然后就瞅了眼那道题,回想了一下做法

    脑补了一下有用的状态貌似很少?然后就开始怂恿zcg去写

    zcg写了一发发现随机数据跑的飞快,然后交上去只T掉了8个点OwO

    然而还是0分,特判了一发完全上升的排列,然后T掉了7个点

    然而还是0分,算了算貌似只要在A两个点就可以有5分了

    开始准备搞一搞看看能不能优化些东西,我头痛欲裂不想继续想了就去看看meet-in-the-middle能不能做

    一上午并没有什么结果,只是又多了几个人A掉了D题,心慌ing

    中午回去碎觉,思博的窝自以为想出来了正确的做法,跑过去跟zcg说,结果刚说几句话就发现有问题

    下午来到机房发现又多了几个人A掉D题,更加心慌

    这时候lgl提出我们可以利用黑科技,我虽然不是很喜欢这种做法

    但是为了奖金OwO,然后我们几个人就开始用各种奇怪的方式搞数据了

    策爷的数据真良心啊,只要知道貌似前三个数就会发现这个序列是有规律的?

    然后机智的不到半个小时搞到了所有的数据,开始搞答案,发现内存开不够,状态数太多了(说好的看上去状态数很少呢?

    zcg怂恿我写暴力,我说暴力求LIS的O(nlogn)要写的常数很小才可以,我好虚啊

    然而最后我还是被逼着写暴力了,写完了之后把程序发给了机房众,然后机房众齐心协力开始搞答案

    从貌似差不多三点左右开始跑,到了快五点的时候所有答案都齐了

    zcg机智的A掉了D题,但是并没有什么卵用,因为A掉D题的人太多了

    zcg rank11 刚好没有钱 sad-story。。

    我们悲伤欲绝,突然发现貌似策爷因为是出题人所以不计排名?然后zcg卡线拿钱?

    机房在那一瞬间貌似都跳了起来,OwO 我们都在欢呼 OwO

    感觉那个时刻好开心啊,很久没有这么开心了呢

    这个时候我场外求助到了一些可以精简状态的做法,然后怂恿zcg又去写了一发D题

    然后测了测发现跑的不慢,交了一发还是T了7个点

    然后测了测自己搞到的数据,发现了程序貌似有奇怪的bug,改了改发现状态数大概400w上下

    貌似要跑1.8s?然而时限只有1.5s,拼命优化常数,然而还是卡不过去,so sad

    绝望的窝放弃挣扎了,决定等比赛结束看题解了OwO(应该还有更精妙的优化状态的做法?

    (他们D题为什么都AC得辣么6啊,有没有老司机教我D题的正确姿势

    最后的最后去看了看F题,发现并没有什么好的思路,就连分块打表也做不到

    看来果然F题没几个人过是很正常的啊

    不管怎么样,马拉松总算以一种奇怪的方式打完了

    不管最后能不能拿到钱把,感觉这几天过的好开心啊QAQ

  • 相关阅读:
    mysql优化四(SQL优化)
    mysql优化三(索引)
    mysql优化二(优化数据库的设计)
    mysql优化一(优化方式)
    ES6——Thunk函数
    JavaScript例子
    fetch使用
    ES6—Generator的next()方法传参
    ES6——Generator函数抛出异常
    JavaScript对象添加属性和方法
  • 原文地址:https://www.cnblogs.com/joyouth/p/5618470.html
Copyright © 2020-2023  润新知