hackerrank University CodeSprint玩耍记

星期四晚上,抱隔壁的进队爷的大腿,我们中学一共12个人去打hackerrank的大学比赛。。

星期五,正好是11.11 ,凌晨一点开赛,我们因为时差就比别人慢了不少。下午终于开始打比赛。首先看前两题,都是随便搞搞的sb题,然后很快就切了。(第二题交了两次,因为看错题了)。

晚上开始搞第3、4题。第3题有人还打了数据结构,我坚信可以O(n)解决,后来发现把序列复制一份,在相应位置打-1标记,真的可以O(n)。

第4题是一道Nim游戏。给你一个森林,给你每棵树的形态,然后两个人可以取走一个叶子,或者整棵树提走。最开始我在研究这道题和树的形态有什么关系,后来发现其实没什么卵关系,相当于一堆石子取走一个或全部取走。但是第一次结论失败,后来发现:树的节点数为奇数时SG=1,偶数时SG=2,特殊的:节点数为2时SG=0。

然后到了第二天,我们学校的总排名上到了第2!!然后我们打算赶超第一的ITMO University。
第五题要在给定无向图中求一个尽可能长的简单路径。开始搞第五题时没有头绪,后来听说可以用一发随机化,然后交上去只有30多分(因为当时理解错题意,以为要找回路)。
搞到63分后就暂时弃了。到了第六题:求一个字典序最小的,含有n个非负整数的数组,使所有元素和为s,两两之间差的绝对值的和为k。
开始的时候列出了五维的状态,怎么优化也要四维。到了下午,发现了重要的解题思路:差分。这个很关键。
对呀!很关键
然后状态就只有三维了。然后记忆化一发,加点优化就过了。

第三题上午搞个大扫除,到中午的时候,发现离第一还有20分。吃个饭后赶紧回机房,码了第七题。
第七题要求有多少个n个节点的无根标号树,对应的点剖方案是唯一的。设两个状态:f[i]表示i个节点的树的答案,g[i]表示i个节点的森林的答案。接着n方的DP一波,码量连1k都没有,然后是一次过。

然后是第八题。题意是给你n个节点的树,每个节点有一个权值。q次询问:给你两条路径,问从两条路径上各取一个节点,求多少对满足:1. 两个节点编号不同 2. 权值相同。
一看就是毒瘤题,没有任何头绪。经过一个晚上的讨(kai)论(hei),得出了一个看起来较暴力的做法:取一个阈值,然后出现次数大于阈值的颜色不会很多,直接用类似前缀和的东西算,小于等于就用了个线段树。手码了5k的代码,不过思路清晰,调了不是很久。
最后把第5题改成正确打法,然后ak成功!
到了下午3点,我们学校上到了第一,并领先了第二名十多分。。。

然而晚上的几个小时是我们的空档:我们要上晚修!于是最后几个小时ITMO University冒出了十几个人,最后高了我们20分。。。但是我们也比第三高了60多分(开黑的力量。。)
原本一个好好的大学比赛,我们一个中学刷上了第二,总觉得有点诡异。。

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值