清北学堂18年国庆刷题班游记
Day -1
晚上校内一试,白天颓了一会机惨然后就去考试了。解压文件 密码xxas929……翻译一下大概叫小学奥数信息奥赛9月29日?我终于知道为什么17年会考小学奥数了= =
打开文件,看了看T1,没啥想法,看了看T2,没啥想法,看了看T3,没啥想法。全剧终
觉得T1可能是个什么毒瘤结论或者傻逼贪心,想了想没什么思路,先跳。
看了看T2,一开始没注意到序号需要连续,以为是个像最短路计数一类的傻逼图论,想了想不会做。又看了看题目发现要求分组序号连续。发现30分就是傻逼线性DP……然后发现DP满足一个转移单调性,如果可以\(O(1)\)或者\(O(logn)\)维护图的连通性就可以直接two points了。想了想觉得不可做。跳了。
滚去看T3,发现暴力都不会打,跳了。
回头看T1,发现如果反着做就是个傻逼贪心。然后开了个桶记录数的个数,顺便合并0。\(O(m)\)暴力修改。发现只有30分。于是考虑差分一下,因为修改时是\(bk_i=bk_{i+1}\),所以直接设一个\(st\),每次修改可以\(++st\)做到\(O(1)\)。于是\(O(m)\)切掉了这个题。这个时候貌似已经还剩一个小时了。写了个对拍,拍了几组小数据拍出错误来了,发现我把\((x>>1)+1\)写成了\((x>>1)|1\)当时没有想到其实右移以后最后一位不一定是0……于是我改掉了放在对拍里面的代码。
滚去看T3,发现貌似像是个DP,写了写没过样例,内心绝望中改成了每步更新答案。总算是过了样例,于是生死不论的就这样吧。提交的时候估分自己100+30+0=130分。
然后就去看评测了。
啥?田julao爆零了?fa姐姐只有10分?我被压在最下面评测,看到别人的成绩的时候内心一阵慌乱。不过想到我T1拍过,于是没那么慌了。出分以后,T3果然不出意外的爆零了。T2暴力拿稳了。啥?我T1怎么挂了20?滚去查了一下对拍,发现我排除错误以后忘了修改数据生成器,于是我后面拍的全是n=3的情况……同时,我修改的代码是对拍中的my.exe,我要交的multiset根本没有改……我宛如一个傻逼,拍了20分钟交上了错误的代码……最后成绩出来110分rk6,130分就可以rk4……我离着rk4差了一个对拍的距离……恨死……
Day 0
下午和人出去吃饭,晚上颓到10点才来报得到……为什么人还是这么多……看了一下老师,是hjc,zhx和zhw,很开心。不过惊讶于长着竟然没去出题……晚上修仙到了1点
Day 1
早晨过来,班主任说为了考试给我们把网断了??十分气愤。
拿到题,看T1貌似不可做,T2貌似是个DP,T3……哎我去这不没穿衣服的带权并查集嘛……然而我忘了带权并查集怎么写了,现场口胡了一个,过了样例放到对拍里面没管。
滚去看T1。发现60分是傻逼DP,5分钟切了60分就走了。然后去刚T2。
过了大概一个小时老师说T3如果有两个方块相同就忽略。我突然想起来我的代码没处理这种情况,心里一惊去查代码,改对以后接着拍没排出问题来。当时我还在奇怪为什么我拍了一个小时没拍出这种情况,没意识到对拍器出了什么问题……
然后去写T2了,既然觉得是个DP就要坚定地执行下去,找到了一个30分的转移方法,分两步转移,发现可以把第一步用单调队列优化到\(O(n)\),然后第二部分本来觉得也可以单调队列的,瞎搞了半天发现只能\(O(n^2)\),最后写了正解拍了一下发现正解挂了,这时候还剩下3分钟,没时间了只能把暴力交上去。在拍的时候发现bat运行闪退,打开data文件发现输入的竟然是T3的数据,但是看一看我确实改了rand代码,此时我心里一惊,发现我bat文件里面没有调用rand.exe,换句话说我T3拍了两个小时拍的是同一组数据……于是赶紧改T3的对拍,发现暴力已经在拍T2的时候被我覆盖掉了……直接心态爆炸坐等凉凉……
交上去以后算了一下期望成绩 T1肉眼没看出错来,期望60pts,T2期望30pts,暴力DP大概是稳得吧……T3期望100pts,但是真不知道有没有写挂……尤其是这次的数据结构是我自己口胡的……总期望得分60+30+100=190pts。下午出分的时候得分确实是60+30+100=190pts。很开心对拍炸了但是代码没有炸。听了听题解发现T2已经想到正解了……就是单调队列优化DP……但是我的方程多枚举了一部分无法优化的无用状态,于是只能拿到30。其实当时考量一下方程转移里面是不是可以省掉一个状态的话是可以拿到100分的,然后就260rk1了……果然每次离rk1都只差一步啊emmmmm
T1暴力发挥稳定。很奇怪为什么我写的每一个暴力都是DP啊……现在DP都沦落到暴力的地步了嘛……感door害怕啊emmmm
想想今天模拟赛的收获:
1、一定把对拍文件检查好,我对拍已经在两场比赛中出4次锅了……
2、DP在一部分没法优化的时候考虑是不是枚举了废状态
题目过两天会放上来
下午讲了一些毒瘤暴力方法,会做的不想听,不会的听不懂。就这么莫名其妙颓了一下午+一晚上
Day 2
早晨起床已经七点40了,联想到食堂的“美味”,最终还是没有选择去吃饭,直接到了教室,干掉了昨天晚上清北食堂发的咖啡。(班主任:大晚上的发咖啡是不是有病啊)
看了下题目,T1的题面十分的不友好,整了个式子上来不知道是干嘛的,一棵树被描述成了一个不含长度为3以上的环的无向连通图……一开始没看出来是棵树,旁边lzr惊呼怎么有两道图论,于是我就去看第二题了。
看了看第二题觉得是个什么毒瘤bfs连通性维护之类的,想起来一试的时候T2给我的惨痛经历直接选择跳掉,滚去看看T3长啥样
T3的50分部分分十分友好,傻逼线性DP5分钟码完。看了看后面觉得像是个贪心但是最后还是没想。
回头看T1,总算看出这是棵树,想了个贪心,码了码样例都没过。然后理智分析一波发现一个点的最长路一定只有两种情况,写一个从父亲向儿子转移的树形DP,正好9点半发了大样例,一发过掉大样例走人了。
回头肝T2,先写了50分的暴力:枚举边权的上下界然后暴力bfs判断连通性。在写bfs的时候为了判重苦恼突然发现这题枚举一个上界以后可以二分下界。发现复杂度还是不对。尝试同时二分上界连样例都没过……心情绝望的时候和@ddyyzz神仙聊天突然发现two points……兴奋至极的我直接码完一发过了大样例。然而我并没有发现大样例只是50%的数据,而且我也没有发现我无向边只开了一倍数组……写完以后因为有大样例整3个题都没有拍。然后瞎搞了一下T3最后五十分写了个显然不正确的贪心想偏偏分。直接交代码和神仙面基去了。期望的分$T_1\(100pts+\)T_2\(100pts+\)T_3$50pts=250pts
下午过来还没评测完,于是先讲的题。中午的时候hjc说T2是个MST突然一慌,仔细想想two points貌似复杂度还是不对……据说lg上有原题就去交了一发,震惊得发现自己有8个点RE,查了查代码发现少开了双倍数组……没事!反正复杂度不对(逃
T1是个结论题???震惊……不过DP貌似问题不大。然后T2……MST??竟然是最小瓶颈树。T3果然是个特别巧妙的贪心。幸好没去钢那剩下的50%……
出成绩了 \(T_1100pts+T_250pts+T_350pts=200pts\)果然瞎搞还是没有分的= =感觉问题不大,这两天的排名竟然都是150人20名没有变过= =
然后讲了一点毒瘤数据结构,直接跳过基础数据结构好评。然后cdq分治听明白了但是前置技能没听懂怎么办……
下午想了想两天写的,发现两天6个题我写了5个DP???感door一丝害怕= =
整理下今天的收获
无向图不开双向边这种锅你也能出
灵光一闪优化掉时间复杂度以后一定看一眼新复杂度能不能过数据……从50分优化到50分的事我已经干过不止一次了
Day 3
早晨起来明明七点半的闹钟最后起床就50了……为了防止头晕吃了半桶泡面,然后就迟到了10min……
解压密码是300AK??这简直滋滋冒奶啊……
看看T1,题面十分不友好的给整了这么长。还有长者什么时候开始在题面里面van小葱的梗了= =。不过看了看数据范围,貌似就是一个傻逼bfs的事?貌似还有点细节需要处理。不管了不管理,先跳T2。
我的妈T2是啥啊= =看了三遍才看懂题意,毫无思路,跳了
滚去看T3,以前做过一道与位运算有关的图上路径题,可是貌似和这个题没有半毛钱关系……我还是滚回去写T1吧……这时候已经过去半小时了。
在第40分钟把T1写完,直接过了样例,发现样例怎么这么水啊??肉眼查错没看出啥来然后滚去钢T3。
T3的50分很好写,因为这图是个DAG,所以50分就是个DAG上的傻逼DP。看了一下T2貌似是个毒瘤数学题,T1是暴力,也就是说T1T2都不是DP,那么T3大概正解就是个DP了吧……看到2e5的范围大概觉得是个nlogn的算法,突然想到可以按位处理转移,再用另一个DP维护后缀和,可以直接坐到\(O(nlogn)\),然后就写了写发现没过样例,发现写挂了好多地方,全部debug完拍上还剩大概半个小时左右。万幸拍过了大数据没有锅。
然后看看T2,只会做20分,再看看模数,12345???不是个质数??这让我可重排列怎么搞啊……想了想只能枚举每个位置填什么然后\(O(n)\)判断了,事实上复杂度过不去,但是能骗一点算一点了= =
期望得分100+0+100=200分,还没出分……未完待续……
出分了 T2不出意外的爆零了,T3不出意外的A了,但是我T1写挂了???于是T1挂到只有10分非常绝望的从rk4掉到了rk33……
我zay就算死这里,从这跳下去,以后写暴力没有大样例也一定要对拍
下午听长者讲了图论……怎么觉得他讲的题我都听过……不过为啥听过还不会做啊……
晚上21:44,总算调出了T1的锅,发现之前那个计算顺序会覆盖掉之前的一些答案于是就凉凉了……原因竟是数组滚得太狠了,应该把第一维改成2……改出来以后顺手和std一起测了一下,发现我前两个题的用时总和比std快了2s……震惊与读入优化的效率……
所以大概就是这样了。希望明天不会爆炸
Day 4
早晨起床就7点55了……啥也别吃了幸好qbxt昨天发的巧克力还没吃……到了以后长者给的压缩包密码是……\(rqyniubi\)???
打开pdf,一股rqy扑面而来……额不是。第一题叫r,第二题叫q,第三题叫y……
看了看T1,题意是一个日期与1******7这个数相差质数天或0的质数天的话就很牛逼,否则海星。哇这个题我都不敢往luogu私人题库上传啊emm其实是个傻逼模拟然而我想了想闰年啥的觉得有点细节不想直接开,就先跳了去看T2
T2……输入一个数输出一个数?问了一下代码长度100k。貌似可以打表?想了一个暴力算法发现我打到100%的范围的话大概我孙子可以得到答案?果断扔掉去看T3了
T3看起来是个十分可做的数据结构。想了想是个线段树,但是合并的时候暴力匹配貌似会TLE……又想了一个办法,建两个线段树,一个正着存答案,另一个存xor1以后的答案。区间打标记,如果发现改了就去查另一棵,想了想貌似复杂度多了个log,而且特别难写,于是我放弃了。事后问了下长者长者说做法没毛病但是会爆空间……幸好没写……
这时候时间已经过去一个小时了,觉得T2貌似可做,因为以前看数竟书的时候看过有关圆周排列的一点结论。于是开始推式子。推出来了两个式子,因为我手上只有n=3和2的答案,于是只能分别带进去……结果第一个式子的答案比2的正解小,3的答案是对的,另一个式子2是对的,比3的正解大。于是灵机一动————这他妈不会是个容斥吧。xjb推了一个容斥的式子以后带进去发现是对地,很开心。然后我看到了令人绝望的横向组合数递推……我忘了公式啊咋办……于是手推了一下……反正也很好推。推完发现有除法要求逆元。记得我半小时前还和@DDYYZZ说没有逆元好评呢……真香。又用了五分钟手推了exgcd……然后10分钟写完了代码,过了样例肉眼调错无误。这时还剩下不到一个小时。
这时回头去写T1,写着写着发现很好写,所有的地方都可以直接暴力。于是10分钟写完了代码外加肉眼调错,觉得没啥问题,但是没时间写对拍了,赶紧去写T3的暴力。30分暴力写稳以后发现有10分是以前写过的一道题,于是又5min码了一个区间xor线段树又骗到10分……由于没有样例所以只能向苍天祈祷不要写挂……
回去看了看T2的代码,即使所有的乘法都先1ll处理了但还是担心爆int,于是都改成了ll就走了。
期望得分100+100+40=240。
下午出分了,100+70+40=210。啥?我T2还是爆int了?很开心的是T1和T3该骗的该写的都没有挂掉。啥?我rk1了?震惊,长者的题竟然210就能rk1……为啥今天没有键盘啊喂差评!
突然想起来今天的名字叫zay说爆零就爆零……因为还剩一个半小时的时候我还一点代码没敲,当时真的觉得要爆零了的说……果然换个名字能转运(大雾
下午长者讲了一堆DP,但是除了数位DP以外我都没听23333你问为啥?我6道题写了5个DP,我再听DP就要死DP上了吧emmm
Day 5
我又起晚了……
到地方开始考试,发现十分良心的提供了大样例。
瞅一眼T1,嗯……60分是傻逼模拟,再高了……不会。
T2……哎这题我好想做过,这不就是AHOI2007中国象棋嘛……等等,好像有点变化,不过问题不大。基本上DP的方法是不大变的
T3……20分傻逼枚举。想想60分……貌似枚举一个区间剩下的可以贪心?又想了想貌似第二个区间可以two points?先回去写T1吧
写完T1的六十分没再管,毕竟T2有把握AC的对吧(flag高高挂起)然后就跳到T2了
回去看T2,50分是4进制状态压缩……考虑正解发现有好多好多的情况啊……推了大概有一半,然后发现式子推错了……绝望中先跳了,
回去看T3,觉得后面two points十分可做,而且离\(O(n^3)\)的复杂度上限低了好多,说不定能骗到点分呢……就他了!
于是写完T3去钢T2,推着推着式子发现不大对,这么推下去大概有……40种情况???这时候还剩20分钟,目测写不完了。然后发现20分直接输出样例即可??于是写出20分走人了。交的时候不是很想交了,毕竟两个暴力一个骗分,目测要凉凉……期望得分\(60+60+20=140pts\)
下午出分,啥??我T3有90分??剩下的题都没有写挂很开心。然后莫名其妙的rk11了。这次的ID叫zay今天也要好好爆零鸭,看来换个ID有助于转运
晚自习我会说我在看电影嘛
Day 6
这次没起晚。
来这里看T1的画风很正常,zhw说比昨天简单……希望吧。
T1……60分傻逼DP,100分……貌似和长者的题目一样可以二进制按位转移。然后直接切了T1,过了毫无卵用大样例的……对,大样例的答案=n,也就是给定n个数选择n个数……
T2……画风十分鬼畜,怎么还有高维空间啊……跳了跳了
T3……昨天晚上我还在和zxy讨论有关一行毒瘤题的事情,怎么这他妈就是个一行题面的毒瘤题啊emmm……求\((3+2~\sqrt{2})^n\)的答案……
手玩了一下T3,发现有一个很神奇的性质,\((3+2~\sqrt{2})~\times~(3-2~\sqrt{2})=1\)……确实正解的用到了这个性质,然后我就在歪解的道路上一路狂奔了……天知道我怎么想到逆元上去了……
最后10分钟,写了个暴力,然后打了下表,没啥规律,但是发现好像差分可以被4整除?于是差分除以4然后去oeis上查了一下,竟然真的有这个数列!然后……需要一个\(O(n)\)的递推。天知道我怎么挂的……这题最后只有30……
最后期望得分100+60+100=260。等下午出分。
出分了,100+30+40=170。T2的第二维情况挂了。T3的数学不知道为啥挂了……居然有4位爷AK了orz
感door一丝害怕。为啥是个人都说这场的题水啊……退役了退役了……
晚自习翘课去给同学过生日去了,炒鸡开心
Day 7
zhw讲完了STL然后就吹了会逼,强调了一些注意事项,散场之前我问zhw说考完NOIP要不要继续下去,然后被隐式劝退了一波……不过被告知不需要学数学我真的很开心(
然后去找zhw要了个签名,zhw写字比长者好看多了2333
七天大概就这样了吧……可能后边会补上校内二试的游记。希望那题不会像一试这么傻逼了吧……
先这样
Day 13
咕咕咕的更新一下……
下午考了初赛……反正我考前啥也没复习,听天由命就好。
选择题前五个还是很友好的嘛……从第六个开始漏出獠牙。咦?T10是不是出锅了?少写了个\(if(x~\&~1)\)嘛?理智分析一波以后果断认为出锅选了A。出考场他们告诉我没出锅,选B是对的……
阅读程序写输出手玩T1和T3都炸了……T2十分友好。T3是个字符串hash?我也没看那个Hash对这个数据有没有冲突……然而我算错了。T4考了个字典序全排列……海星
感觉补全程序写的好妙啊……好好地单调栈非要写双向链表真的是毒瘤。但是T2好妙哇……一个贪心一个DP还滚动了数组……切掉切掉……最后发现错了一个空
晚上是二试
考试之前教练说这次的题很简单……而且听说有大样例。好评
看看T1……卧槽这不是队列模拟裸题嘛……不清楚有没有什么细节先往后看。
T2……字符串?\(n~\leq~50\)?这个范围猜不出是什么算法来……先跳了。
T3……看起来像是个DP……啥?边都是给定的?这不爆算嘛……这么水的嘛??
回头五分钟切了T1,肉眼没查出错来就去写T3了。又过了5分钟T3切掉……这个时候才过了20分钟……我已经200分了……
看看T2,求集合?这个范围怕不是爆搜+剪枝?
仔细想想可以预处理冲突关系,然后……会得到一个有很多联通块的图?个个联通块单独处理然后乘法原理就好?显然这个可以卡。不过我选择相信数据有多么水。写了写然后并查集和链表卡一下常。跑了下大样例秒出,自己rand了3000组数据都没有TLE。然后大概就可以交了。
等一下,我T3大样例T了?看了下我读入用了2s???我用了读入优化吖??不管了不管了,反正我电脑开着360呢……
然后在开始1小时后提交上去,期望\(100pts+30pts+100pts=230pts\)。当场评测\(100pts+90pts+100pts=290pts\)??啥?有个点\(1.01s\)被卡常要不然AK了??这数据水的出乎我意料啊??
然后我就去隔壁机房玩魔塔了
晚上出结果的时候,校选rk4……感觉问题不大……另外被刷新了一波三观。
就这样
完了。