「选择了二中,就是选择了联通」
Day 0 tan90°
试机题算么
Day 1
大清早从家里出发,搭上了死亡三号线,前往二中
匆匆领了狗牌饭票,以及一件工作人员红的衣服,赶到宿舍跟腿残的lzh会和
完了先去试机,顺手敲了个NTT板子熟悉一下环境,还写出了几个弱智错误
虽然老师来了但他并没去合照,于是我一个人在百步梯上淹没在各地的$dalao$之中
二中伙食虽然种类不算多,但分量挺足的,还有酸奶和水果,我果然是来骗吃骗喝的,宿舍的被子也相当舒服
day1的题目其实挺传统的
T1 邮件
给$N$封邮件和$N$个邮箱,邮件有个$1$到$N$范围内的目的地,邮箱能容纳一封邮件且送往固定的某地。$Q$次询问,每次询问将$[a,b]$内的邮件投入$[c,d]$内的邮箱(只能投入空邮箱)期望放对目的地的邮件个数(询问之间相互独立)。
$N leq 50000 \, , Q leq 1000000$或$N leq 100000 \, , Q leq 100000$
一道全场切的签到题...是否投入空邮箱并没有影响,答案就是$sum_{i=1}^n a_i imes b_i$,$a_i$,$b_i$分别是两个区间里颜色(目的地)出现次数。考场上想到容斥拆询问,也想到莫队处理区间答案,就是没想到合起来,实在是太菜了,最后写了个乱搞的处理四个端点的假莫队。其实只要把一个询问拆成四个询问两个前缀区间的$ans$就可以很方便地用莫队维护了。需要根据数据范围调整一下块大小,不然会T。
T2 旅途
$r imes c$的网格图,每行每列有铁路及对应的费用和开始服务时间,有些格子有机场及开始服务时间,给出乘飞机费用,给出$Q$个询问,问点对的最短互达时间及在此条件下的最小费用。
$r , c leq 100000 \, , Q leq 100000$
看到这么冗长的题面瞬间不好了,随意敲了个暴力15.6pts滚粗了。
正解是分若干类讨论:
①起点终点在一起 ②起点->行/列->终点 ③起点->行/列->中转点->列/行->终点
④起点->行/列->中转点->列/行->中转点->行/列->终点 ⑤起点->飞机->终点
⑥起点->行/列->中转点->飞机->终点 ⑦起点->行/列->中转点->飞机->中转点->行/列->终点
⑧起点->行/列->中转点->列/行->中转点->飞机->终点 ⑨起点->行/列->中转点->列/行->中转点->行/列->中转点->飞机->终点
T3 令人印象深刻的题目名称
给两个序列$A$,$B$,保证$A_i geq B_i$,$A_i leq N+1$,$B_i leq N$,允许对$A$进行操作$(l,r,v)$:使$A_i=min(A_i,v) \, l leq i leq r$。求使用不超过$M$次操作使$A$与$B$相同的合法操作序列数,合法操作序列指无前缀操作序列能使$A$与$B$相同。
$N leq 100 \, , M leq 10^9$
计数dp+容斥,不熟练果断弃了...
正解咕咕咕。
于是乎晚上滚回宿舍颓,低层宿舍还没信号...
Day 2
二中虽然6:30就放起床铃了,但都很好听?
T4 畅游清华园
给$N$个点的树,边有权值$(a_i,b_i)$,点有权值$(c_i,d_i)$,对于点$y$出发的路径,经过一条边$x$的实际距离为$min(a_x+c_y,b_x+d_y)$,求$sum_{i=1}^n sum_{j=1}^n dis(i$->$j)$。
$N leq 500000 \, , a_i,b_i,c_i,d_i leq 100000$
又一道全场切的签到题。稍微转化一下讨论$a_x-b_x$与$d_y-c_y$的大小关系算贡献即可。可以枚举点依次换根维护答案,也可以枚举边讨论子树内与子树外的贡献,树状数组或主席树维护即可。随手切了再吃块巧克力开心下。
T5 地形勘探
交互题。给$N$个点,边长为$1$的树,提供两个函数$feature1(m,*a),feature2(m,*a)$,在$O(m)$时间内返回可重点集$a$到树上某一点路径和的最小值或满足前一条件的其中一个点,分别允许调用$lim1,lim2$次。要求还原整棵树(返回边集)。
$ N leq 4000$,$lim1=3999,lim2=3997$ 或 $lim1=100000 , lim2=0$
啊蒟蒻第一次见交互题,还不会用下发的交互库,于是写了个$O(n^2)+0+O(n^2)$($lim1+lim2+$时间复杂度)交上去,竟然有分??感觉可以分治做或者先用一个点得到所有点的深度再慢慢搞。
贴一下正解:
$feature2$实际上返回的是(不重复)点集的带权重心
① $lim1=3999,lim2=3997$ ,两种操作线性次
先选点做根,用$n-1$次$feature1$求出所有点深度。
再用$n-3$次$feature2$问出每个点父亲
· 深度为$i$的点$p$的父亲的深度为$i-1$,设深度为$i-1$的点集为$S$
· 则 $feature2(S + {p} imes (|S| - 1) )$ 一定返回$p$的父亲
· 因为只有$p$的父亲满足“每个子树不超过权重和的一半 = $ |S| - 1 $”
$O(n)+O(n)+O(n^2)$
② $lim1=100000, lim2=0$
继续考虑“按深度加点,对每个点确定父亲”
· 对一个深度为$d$的点$A_d$,已知深度$ < d $的点构成的树
· 从根往下找,设当前点$x$的儿子集合为$S$,下一层目标点为$y$,并分成两子集$S_0 , S_1$,令$|S_0| = n$
· $y otin S_0$:$feature1(S_0 + {x} + n imes {A_d}) = n imes (d - k + 2)$
· $yin S_0$:$feature1(S_0 + {x} + n imes {A_d}) < n imes (d - k + 2)$
这样递归判定是$O(n log^2 n) + 0 + O(n^2 log n)$的
优化算法。可以缩小集合$S$:
· 以某个儿子为根的子树的当前最深节点 $< d-1$(排除此儿子)
· 可以减少枚举$k$的次数
· 若只有一个儿子则直接选择(树上路径压缩)
$O(n log n) + 0 + O(n^2)$,实际操作次数$40000$次左右
T6 计算几何
给出平面上$N$个点,要求选出$k$个点组成凸包且无三点共线,求所有方案的凸包面积的期望和方差,对$998244353$取模。
$N leq 100$
计算几何??感觉不可做,敲了个$N leq 18$的暴力枚举所有凸包走人,暴力还不怎么好写,试图推所有点在$x$轴正半轴或$y$轴正半轴上的柿子还没时间退出来就结束了。。
正解是依次考虑凸包最左边的点并对右边点极角排序,dp同时转移方案数,面积和,面积平方和,再来一下极角排序可以由$O(n^4)$降到$O(n^3)$或者$O(n^3 log n)$
day2上午就考完了,下午又只能待在宿舍,机智的舍友跑到有信号的高层去玩耍了...day1day2爆炸的也许还能指望一下day2+?
Day 2+
事实证明没指望了...
89 50 4E 47 0D 0A 1A 0A......
大概内容是两种校验算法,简化png文件的读入和输出,soble边缘检测,halton序列随机采样(smg),基于像素或者块的纹理合成。
d2+的题目感觉还是挺新颖的,有别于传统竞赛模式,内容丰富,解法自然... 不过3小时做8个任务感觉还是有点紧。
看到十分长的学习手册以及八篇英语论文就感觉不好了...我还傻乎乎的仔仔细细看学习手册的内容,还试图自己归纳理解png的格式,花了好大力气才搞懂学习手册到底在说什么。然后又作死地从png读入开始写起,虽然是模拟,但还是对着数据一边分析一边写,于是写的非常慢。我还在研究手册的时候隔壁的早都开始敲代码了,我后来才反应过来出题人都把想要传达的信息安排好了...然后回过头去嗑校验算法,都是比较无聊的模拟题,照着学习手册做就好了,然后我没想清楚,又浪费了许多时间,于是乎到最后我开始试图弄懂输出png的时候已经没时间了,成功GG。事实证明没有get到主题人的意图下场会很惨。
总结下:出题人意图是想让选手在短时间内依次学习重点,跳过无用内容,以解决任务为目标,而不必深究具体内容,代码最好模块化,同时也比较考验码力。所谓是提前体验大学生活。真是毒瘤啊
Day 3
我还是太菜了连面试都没有... 据估计我好像就差个几十分,啊
于是愉快的听讲题以及休息若干个十五分钟。
下午自然是广告宣讲时间,弹幕很快乐,了解了下清华算协还有清华科协。然后就是用来给咕咕的协议拖时间的真正的广告。今年因为某些原因都变成了一二三等奖,当然我四等奖滚粗了。然后就回学校了,也没得WC去...
感觉自己还是太菜了,还有许多常考的知识点没深入学习,现在也没有足够时间允许我像之前那么投入了。不过能来到这个全国级别的平台,已经见识到了很多班里同学见识不到的东西了。