「闲话」CSP 集训记梦(一)
一个不写闲话的 oier 不能证明他是一个 oier
其实写这个是因为 10.5 晚上做梦了,所以记录一下
建议跳过 9.28 和 10.1 部分
9.28
上午模拟赛。
T1 一开始搞了个贪心假做法,发现过了大样例,但显然不对吧!也不会其他的解法,先交了一发。
然后开始写暴力拍了一手,两千组拍出了个 Wa 的,手膜,不对呀,答案没问题啊,哦原来暴力锅了,继续拍,又一个错的,这次是真错了,觉得正解就是可反悔贪心,不过不知道怎么贪,一想也不好卡吧,先跳了。
T2 纯无脑分讨,打了一版过不了大样例,发现题读假了,开始重构。在纸上把所有情况列出来就清晰多了,直接按着打,完了之后发现还是过不了大样例,仔细检查代码,改了几个细节。
在终端 diff 查大样例,不对?这拍暴力也不好写啊,继续瞪码吧,没问题啊,于是开始瞪我的输出和大样例找不同,找不到不一样的?尝试二分删减输出和大样例。
删到大样例答案和我的输出都只剩一行,diff 还是不对,这时发现是空行和空格的问题,无语 + 1......这个时候大概已经两个小时十分钟了(找这个丝毫不存在的错误找了快一个小时),于是钦定自己 T2 过了,不再管大样例(事实确实过了)交了。
回去想 T1 贪心怎么反悔,发现可以 \(O(nm)\) 地反悔贪心,十分钟改完过了所有样例开始拍,1000 组、5000 组、10000 组,耶!静静欣赏自己对拍的输出“AC 10005 AC 10006 ...... AC 15000” ,ok 这下肯定没问题了,准备停拍,发现电脑死机了,无语 + 1,等了一会不活只好重启。
重启之后重打 T1 代码,这时很急,打完大样例错了,??找了五分钟,发现是个唐错,改完就好了。可这时就只剩 0.8 h 了。开始慌了,200 pts 肯定是个大众分一下,T1、T2 那么水,我要是 T3、T4 暴力打不完肯定倒数。
飞快读完两道题,发现暴力都不好打,还剩 0.3 h 的时候,会了 T3 40 pts,需要一个深搜,一个宽搜,一个倍增求 lca 等等, 没办法直接开始打,最后结果是没打完......
得分:\(75+100+0+0=175 pts\),T1 贪假了。赛后知道 T3、T4 都输出 1 可以拿 25 pts,无语 + 1
这场好像确实没挂分,只不过是被 diff 因为空格的问题控了 1 h,被对拍把电脑拍死重打代码控了 0.5 h,浪费了 1.5 h,damn。
10.1
今天放假还要打模拟赛。。。
开场看 T1,感觉很水,想到了个按正数分块,然后启发式合并假做法,直接开打,过了三个样例,爽!诶,第四个不对,而且很不对,由于代码写的较复杂,所以我果断选择直接重构,开个结构体存就好多了,测样例,过,过,过!错!!于是开始看代码,发现假了,这个时候大概一个小时左右,然后开始想正解怎么办,想了半个小时真不会...跳了
之后半个小时读了后面三道题想了点暴力分,发现暴力分很多,三道题打完暴力和特殊性质能拿 \(80pts\),尝试想正解无果,还剩一个半小时的时候开打暴力,从 T2 开始吧,想想链的性质怎么办,诶我们对于每一个点找到第一个大于这个点权值的点,查询的时候倍增查不就做完了吗,那这不就是正解吗,现在只需要做到找第一个大于这个点的点就行了啊,这好说呀,直接一个单调栈,诶好像栈不好做啊,那我把每个点链上的点存起来,不排序 upper_bound
不就行了吗(我承认我是唐诗),还剩 0.5 h 的时候打完了,小样例过了,大样例不对?!自己造了几组小数据找到不对的,发现我是唐诗,upper_bound
是二分找的,肯定不能用它查没排序数组啊
10.5
正文:
晚上打第三遍铃声前抱着被子正要去一个“安静点的宿舍 406”“好好睡觉”,消费股突然从半路冒出来,赶紧又抱着被子往回跑了。决定等几分钟他走了再行动。
上床 7 分钟的时候就安耐不住了,问 int_R,你觉得消费股走了吗?int_R:阿坝无阿坝欧。
遂有如下对话:
Aqr:5k,你说消费股走了吗
5k:我不到啊,这怎么说
Aqr:那我在心里定一个 A 代表走/不走,B 代表不走/走,你选 A 还是选 B?
5k:那我定一个 1 代表 A/B,2 代表 A/B,你选 1/2?
Aqr:行,那我选 1
5k:1 代表 B
Aqr:啊?B 代表不走,那再等会吧。
三分钟后,再次如上猜测消费股走没走,结果如下:1 -> A ->走了
,遂抱着被子去了 406 这个适合睡觉的宿舍。
好宿舍果然会有好觉呢!做了好长时间(大概是 \(8.3h-3.5h=4.8h\))的梦,内容如下:
先是梦到和好多人玩狼人杀,都有谁忘了,人都一种熟悉而陌生的感觉,好像都是似仁吧。
我是平民,第一晚先思乐个叫什么 CTH 的狗,据大家分析好像说是什么“狼狗一家”,所以 CTH 其实是狼,自刀的。然后 lxyt 和发电王对跳预言家,并且对跳另一人是狼。
这种情况于是我立马怀疑起来了 lxyt(因为他是后跳的),他说话的语气类似于都被爆了遂摆烂的那种。于是我表达了对 lxyt 的怀疑。
9G 又开始表示了赞同,最后又加了一句“嗯不不,半支持吧”,这不纯 int_R 玩法吗?据我所知,除了 int_R 没人会在不是狼的情况下这么说话的。但是 int_R 的先例让我很顾忌。
最后就是雀氏 9G 和 发电王是狼,lxyt 两晚上验出了两狼,于是把发电王票了,5k 毒了 9G,游戏结束。
中间好像还插入了别的情节:梦到有个大爷突然在楼道里开始用方言大骂特骂,“你做嘛来的啊?啊?你做嘛来的?”于是我就醒了,醒了大概十分钟吧,去了个厕所发现大爷只是梦里的大爷,楼道里并没有,又继续睡。
睡着了之后竟然又接着没做完的梦继续做了,把那一把狼人杀玩完了。我们又开始玩谁是卧底。
第一把很典的空调和电扇,我是空调。上来两三个唐诗说的什么勾使(原神崩铁啥的吧)听都听不懂,直接红温决定要说一个大家都听不懂的。
不过好像没什么是大家不懂的吗,那我就瞎编,瞎编还能听懂?于是说了一个:这是可以买卖的商品,有一个牌子是肖战代言的(做梦前刚喝了一瓶肖战代言的牛奶)。
第二轮我正常说的:这个东西的一种有一个听起来很官方的名字,它可以藏在墙里,(我指的是中央空调)结果就给我票了,理由是听不懂我说什么。这么玩是吧,那我第一轮是不是该把前三个发言的:El...(不会拼)、lxyt、GGrun 全投了!
又双叕玩了几把,最后一把告诉我是白板。
第一个人 oos 发言,他吭哧半天说了一个“阿弥陀佛”,纳尼?立马想到观音菩萨和如来佛祖,后面到 El... 和 lxyt 也都是很抽象,一眼白板的那种感觉,这个时候我知道了大家都是白板!好玩了!后来 GGrun 和 5k 甚至对跳白板。更加验证了我的猜测,于是准备开始放肆地玩好玩的,先选了一个自己准备说的对象:观音。于是到我的时候,我说:他和最近一个很火的国产游戏的故事相关。
我想的是,大家都是白板,肯定不会票正常玩的那个,结果大家都不按正常人的思维出牌,我被票了!恼!!!我没开始玩呢!后面就到了他们吭哧吭哧、编也编不出来、说也不敢说的地步,作为一个思乐之后的场外很难不笑。
我:我现在已经确定 3 个人的身份了,两个是跟我一样的,另一个是对面的。
到了 ggrun 发言,他开始吭哧,于是,我:不是,你没玩到那一关吗? GGrun 附和:不是,我在想一个对面听不出来但是能让队友确定我的身份的词。
好玩捏!
这个梦好像一直做到半夜十二点多,不知道为什么梦里的人都突然倒地上一动不动了,但我也没什么反应,也不惊讶什么的?奇怪捏。只剩下 GGrun 和 El... 了,我开始给他们讲一个爱到极致的爱情故事。
讲完之后 GGrun 突然表现出了极大的藏 shi 天赋:\(*\) 了人为什么要抛 \(*\) 呢,直接把肉和骨头剁成馅和渣渣分多次冲进马桶不就行了。 ...膜拜天赋哥!!!然后 El... 就说睡不着了,害怕。
我回到自己床上准备睡觉,然后他也跑到我床上,我俩就浅聊了一个多小时吧,聊了聊初中一个共同的同学,然后他就开始发电,高举双手“我永远喜欢伊蕾娜!”。
10.6
好丸,有体活,六点二十醒的,回到自己宿舍不敢不睡,因为做梦时间太长了,这样深睡眠时间就短,怕自己第二天模拟赛困,但是又睡不着了,然后就去打球了。
上午模拟赛,竟然全程一点不困,格外精神,事实证明做梦越多第二天越精神,lxyt 也是这样认为!那今天晚上我还要做梦!!!
T1 看起来很水,想了个假做法,大样例过不去发现假了,于是在一个小时的思考之后想不出正解,开始乱搞,不断的循环来尽量贪心贪的更优。最后改了三次,结果如下:
T2 想了四五十分钟吧,想到了线段树维护斜率做法,但很难搞吧,double
型的,精度怎么办啊,乘上 1e6 搞成整型做?没敢打,跳了。
T3 读题,唐唐唐!一眼不会题!打了爆搜,结果答案是按数量的比例分配?不管,交了
T4 ,丸!更不会,想到直接求出初始两点间距离可能就能拿不少分吧,但一想,即使是很大的样例也很容易造出不让这种骗到分的数据啊,于是没打!实际能拿 20 pts。
会 T2 的 \(qxy\) 暴力,看了一眼数据范围,\(q^2\) 更好打诶,这样两个加起来不就 \(60pts\) 了吗,打完 \(q^2\),只剩 15 min,然而 \(qxy\) 没有想象中那么好打,决定弃了,再去 T1 贪一下。
最后也没贪到更多分。
下午有 CF,发现自己切题飞速?连切三个,卡到 C2 时打开 friends 排名发现好多人才 AC 1个?排名在 1200 左右,爽了!尝试去做 E1,打了一个搜 \(n\) 遍的深搜,发现假了,folyd
又不太对,注意到要用到的道路两端一定至少有一段是给定的序列中的点,那 \(n\) 次 \(Dij\) 就处理好边权了,然后呢?反过来做,从 \(n\) 到 1 每次加边权最小的边 ,嗯。。。假了。结果就是没打出来,只 A 三道。
打完 tui 了一会,开始该模拟赛题,去问了 CTH 状压不合法的怎么办?我说:这也不是很好打吧。 CTH:其实很好打,你打就知道了。
后来又去找他:延伸到哪怎么找,枚举复杂度也太高了吧。 CTH :好好好,那你快去打吧,去优化吧。
当我用了 20 min 打完之后,改了一个点,正准备跟这个 3k 的代码耗到底时,然后就过了?。扭头看见比我早打一个小时的(很好打的) CTH 还没调出来,然后把他拉过来疯狂嘲讽,黑子说话啊!不是好打吗
10.9
模拟赛又第一了,倒的
开题看见 T1,
\(n\) 的范围为 \([10,10^{180}]\)
嗯...好高精,傻子才打,于是打了 __int128
部分准备跳,发现大样例显然在 __int128
内但我不对?!
尝试换种搜索写法,没用。于是开启了疯狂调试时间。在一个半小时的不断输出后,发现其实是 bitset
不能存 __int128
。基霸!没事,反正这次模拟赛 4.5 h 呢呵呵,真没事吗
看到 T2 求子串(字符串里最讨厌的东西),让我 \(O(nq)\) 做,直接跳了,看 T3,又是字符串,十五分钟打了 30pts 暴力,正解无思路,看 T4,想了一会,发现正解搞个分块或者线段树维护个区间 \(kx+b\) 很好做吧。这个时候大概还剩两个小时,决定回去打了 T1 的高精。我是傻子
觉得应该不能很难打吧,毕竟之前暑假赛时读假题也打过一次高精乘。然后打出来高精乘 2 后测试正确与否,过一个样例“帅!”(跟 Ratio 学的),调高精减的时候同样,帅了十几次,lxyt:别出你那 b 动静了,安静点
,哦,不帅了。
打完之后就 11 点了,不是啊?就剩一个小时了??
于是火速思考自己的 T4 思路的可实现性,嗯,乘方...每次乘方都得开个块?显然不好,那线段树?不敢打啊(赛时没打过线段树),而且每两个符号就放一个 ^
这时间复杂度就不对了啊。所以开始打部分分。
写了 3 个 namespace
,一档暴力分,一档每次询问符号一样的,直接存起来所有数的加和与乘积,询问的时候是 +
就直接加加和,是 *
就直接乘乘积,^
就搞快速幂,还有一档只有 +
和 *
两种符号的分块维护每个块内的 \(k,b\) 值,每次修改块内 \(\sqrt n\) 修改就好了,结束前一分钟打完这三挡分,预计能有 \(40pts\)。
实际得分 \(100+0+0+0\),T3、T4 全 RE 了??额,T3 字符串数组开炸了,T4 我以字符形式输入一个数,但没管可能是两位数。改了之后 T3 20pts,T4 45pts,挂了 65?
然后 T2 人手 70 pts ?不是!!凭什么 T2 暴力给 70 pts
CTH:我 T2 暴力就打了 5 min,就 70 pts
我上早八!!!
啥呀,中午去吃饭 cpa 和 CTH 一个比一个坚定地说:bitset 能存 __int128,你自己代码的问题别怪人 bitset。
于是想了一中午代码到底哪出问题了,越想越不对啊,下午问 5k,果然是 bitset,并不是我代码的问题,在这里感谢 cpa 和 CTH 多控我一个小时左右!所以下次放屁先擦腚
10.10
今天没模拟赛,上午打图论 2 的专题,被一道欧拉路径板子题控了半个上午,最后发现是数组开小了。
下午有体育课诶,问别的奥赛确实上,于是 pig 一来就跟 huge 说了,huge 说那你们也去上吧。好诶!
体育课本来该上自己报的课,但是 CTH、Ratio、丁真都是没报羽毛球来打羽毛球了。
体育老师:我觉得咱们人有点多啊,我怀疑是别的课的过来上咱们的羽毛球了。现在咱们来点下名,点到名字的同学去那边重新站队。
Ratio:完了,诶,楼哟轩是报的体育课吧,那我报他命。
Aqr:(拍了拍 CTH)等会报膏之嘉你就到
叫我的时候我正常点到然后跑去了另一边站队,于是第二人称目睹接下来一幕的发生。
体委点名:膏之嘉!
有些画奥的:他没来,在集训。
CTH 冲出来:(冲着体委),来了来了,我我,膏之嘉!
体委(显然认识膏之嘉):啊?啊!
然后后来点到喽轩:
Ratio 和 丁真同时冲出来,丁真尝试拉一下 Ratio 但被甩开了。这一幕被体育老师看到了
体育老师拉住他俩并问 Ratio:你叫什么
Ratio:喽哟轩
本来这个时候我很害怕的,一直在问他俩捏汗,结果 Ratio 直接正面回复 喽哟轩,(我吓一跳)然后他跑过来的时候“啊嘿嘿~”了一下,直接绷不住了
不是哥们你心理素质是真强大啊!还有 CTH,在全班人的纳闷声里大声冲体委:我膏之嘉!然后头也不回地跑过来,5k:这俩人就适合去当间谍。
体育老师当然也问丁真了:你叫啥?
我甚至害怕他回一个:我也叫喽哟轩
还好,他:“昭抖力”,于是遗憾离场!manBA out!
其实不点名等热身完是完全可以来打球的。
恐怕晚上想起来 Ratio:我叫喽哟轩,啊嘿嘿~!要笑的睡不着了吧
10.12
看见 T1 最大值最小,自然想到二分,但立马:这也没得二分啊,否了!遂想了一整场的反悔贪心。
lxyt:确实是贪心,但不用反悔
Aqr:你说得对,但是不反悔的前提是你知道用二分
赛时甚至想了很长时间爆改二分图,左边一个序列,右边一个序列,先尽量把个数少的序列去匹配差值最小的另一个序列,如果匹配到的元素已经被匹配过了,就去看看谁匹配的这个元素以及它能不能换个元素匹配。
成为全场唯一一个(除了大黄)T1 只拿了特殊性质分的。
然后 T3 看出来是很数据结构的数据结构,于是第一次在赛时打线段树(好像打的挺对),然后打了两版假了两版,急眼了,打完 \(qnk\log n\) 溜了,之后就是想 T1 反悔怎么反 和打暴力。
甚至我 T3 都用的二分,T1 到最后也没再想一次二分
发现当我签到能签上的时候,暴力分就打不满,暴力分打满了签到就签不上。
昨天晚上打电话,发现秦皇岛到邯郸那天没有高铁,最合适的回家方式两个:
-
晚上七点多去济南的火车,然后再坐别的车两个小时回邯郸
-
晚上十点多去聊城的火车,凌晨四点左右到聊城再坐一个小时车到邯郸
暂时选的是第二种(不是说一起聚一聚吃顿饭吗)
但是好像没多少人准备在秦皇岛留?好像只有 int_R 说不留?但其他人也没说啊
所以现在大家都订几点的火车,有谁是准备留下吃个饭的啊?
晚上打 ABC,到 C 就读不懂了?于是读题读了半个小时!最后看见了“同时”两个字,好吧那懂了。
A 了之后看 D,想不到,去转了一圈回来接着想,还剩十分钟结束的时候会了,本来觉得能极限一次的,最后一分钟交上 RE!?!
最后结束之后找 pig 帮我调,我定义了两个 string s,c;
写了一句 c[i+1]=s[i];
导致 RE。
不是,这 string 咋那么多事,觉得还是 char 数组好用些,想到了一些过往云烟:
最开始因为 string 的简洁好写,一般就用 string,后来高考集训的一次考试考到 kmp,赛时推了一个小时推出来但因为用的 string 单次赋值是 \(O(n)\) 的,导致 T;
于是基本不再用 string,然后九月份一次考试 cmp(string &a, string &b){return a+b<b+a;} 那次,我用的 char 数组手动模拟这个过程导致 T 挂了 25 pts,就觉得还是 string 简单好写一点(毕竟是个 STL)。
然后这次......
10.13
没模拟赛呢,上午无聊...
改了昨天 T3,学了学笛卡尔树,打了 SCP-J 的 T1,我靠我一上午就干了这??
下午 SCP-S 的签到不好签,恼了。然后 xfg 通知我们参加高校校园行!!!
今年清华和北大换地了,(去年北大在莘元馆,今年是清华),一看到学校分布的表就想到去年在莘元馆......
没有格外想去的学校,本来想去浙大看看?因为参观过紫金港校区然后对它有很不好的印象。可能还有别的原因?不清楚不知道
被 Ratio 拉着去找上交大,在明志楼看学校分布发它是在西扩,于是跑过去。
(注:以下内容仅为记录,内容加密,【数据删除】是因为不能让你们知道,如果能看懂的切勿传播!!!不要谈这个事!!!)
updated:数据删除的内容 maybe 依次为下:排队的人都溢满整个楼道了、垫着脚往教室里面看、被挤成肉饼了、走了一些人、怎么全是女生、第一排桌子前、讲台前面、瞌睡了、Ratio 旁边
在西扩的弘毅一楼,第二个教室就是上交大,但第一个是浙大,并且【数据删除】,然后我就【数据删除】走过浙大的教室,显然浙大教室前门跟上交大的后门是挨着的,于是 Ratio 带着我在上交大后门排队。
这样就【数据删除】,不过过了一会【数据删除】就没事了。
后来因为上交大过于爆火,实在挤不进去,我俩就上二楼转了转,Ratio 发现二楼复旦大学人还少点(他冲着上海这个地方去的)。
于是他想进去,但我走到前门,立马看见【数据删除】,Ratio:那去这个教室也行。 Aqr:你去呗
于是 Ratio 蹲在了教室靠门口的地方,就在【数据删除】处,然后我“不想进去”,就待在贴着门框站着,但在外面看不见也听不清,Ratio 还尝试给我让地,想让我蹲在他面前的一处(图中蓝色的位置),这就是【数据删除】的位置。
图示:红色为我 Ratio,粉色为走廊里坐着的其他人
我:不不不,算了算了,我不进去了。这么过了半个小时,期间甚至【数据删除】,最后结束前十分钟【数据删除】走了两人,就有地了,我迅速窜了进去。
我嘞个 Ratio,听宣讲的时候,我:哥你真会挑,真会挑学校,真会挑地!
10.14
这模拟赛真吃饱了!!!
T1 同样看起来很可做很签啊。其实上来的思路直接就想到差不多的结论了,但是想着万一有两条截然不同的路径却可以使字符相同怎么呢?
于是换了个方向,发现到达每个位置都有一个准确的步数,于是把步数相同的位置分到一层,尝试把同一层中字母相同的合并。发现没法做啊!
搞了四十多分钟觉得实在不可行,这个时候已经开场五十分钟了,有点慌,“不会又切不了 T1 了吧”。于是回到最开始的思路,发现即使是两条截然不同的路径也一定是起点处和终点处符合我的结论。
那就可以直接做啦!十几分钟交上,又花了十几分钟写了个暴力和拍,拍出 RE 了。改了个越界继续拍,很对!加大数据,Wa 了!发现只判了同一行里不相邻不可行,没判同一列里不相邻不可行。
改完就没问题了。但是结束之后发现自己的第一版代码就 A 了??鉴定为数据过水。
T1 连打带拍花了一个半小时吧,这时候感觉还很有优势,看 T2,很有思路,贪心,一定先留小的,那就是尽量删大的,直接打。
二十分钟打完直接过了两个小样例,测大样例,全是 0?发现想假了,每个节点删不一定会对整棵树上深度大于这个节点的留或选有影响,需要不断跳父亲判子树合法。
那这样一条链的情况不就成 \(O(n^2)\) 了吗,(赛时太宋了,显然 AVL 树不可能是链,深度约等于 log),又想了半个小时优化无果,决定先打这 \(O(n^2)\)。
发现判断和削减很难维护啊!!
中间先去读了 T3,byd 题面是购使吗?
将庄园的土地看成 \(1\times N\) 的矩阵,每块 \(1\time 1\) 的矩阵有自己的高度···一个点如果属于土地内部或边界不会有积水,在···求积水体积···
不是你家土地除了土地内部和边界还有啥啊,土地外部?这是人说的话吗?直接跳了。
然后去打了 T5 的暴力,回来搞 T2,这时候脑子特别乱,开了大概六七个数组,维护什么节点深度,子树内最大深度,子树大小,子树深度为一个值的个数,深度个数后缀和···脑子直接宕机了,好绕!
干脆摆了!赛后看题解发现自己思路是对的,但真不会维护
然后以为这把又要废了,哦~原来大家都废了,那没事了。
下午改题,先尝试了一个小时 T2 在赛时的代码上做,发现还是难以维护,于是去看题解,哦,好东西啊,可以由深度转化成子树最高深度为 x 的大小。
改完就不知道干嘛了,看 T3 题解,嗯······溜了溜了~