[Other]THUWC 2019 游记

Day [-6,-2]

  • 模拟赛天天垫底,药丸
  • 最近在 OJ 上没做什么题,药丸
  • cx Log_x dalao 5 5 5 天连续 7 7 7 场模拟赛 7 7 7 个 rk1 , orz

Day -1

  • 考前日常颓废
  • 早上一直睡到 11 : 20
  • 下午无限颓废
  • 晚上开始做数据结构题热身
  • 选择了一道不错的数据结构题 APIO 2018 新家
  • 边写边颓, 21 : 50 才写完,还没编译

Day 0

  • 9 : 19 坐动车从 FZ 南到 SZ 北,到 SZ 北时 14 : 24
  • 又用了 0.5h 从 SZ 北到 GZ 南
  • 住在 xxjh 公寓
  • 本来打算晚上打一场 cf ,但是怕掉 Rating 影响心情就没去打
  • 去调了调 APIO 2018 新家,然而并没调出来
  • 这为我 Day1 T2 的 53 分暴力没调出来埋下伏笔

Day 1 ( from 13 : 30 : 00 to 18 : 30 : 01 )

  • 早上报到,然后去试机
  • 第一道试机题是去年 THUSC Day1 T2 ,当时听了讲课并花些时间弄懂了题解,开始码码码
  • 第二道试机题是提答,求 K K K 维空间下 K K K K K K 维球体的所有公切面
  • 立体几何都不会的本选手直接跳过第二道
  • 然而第一道试机题码到一半直接回去午睡
  • 午餐,感觉 gzez 的食堂海星
  • 13 : 15 进考场
  • 13 : 30 开考
  • 三道题目题意分别如下

  • 给定两个长度为 n n n 的序列 a a a b b b ,序列元素在 [ 1 , n ] [1,n] [1,n] 之间
  • q q q 次询问
  • 每次询问四个参数 c , d , e , f c,d,e,f c,d,e,f
  • 对于每个 i ∈ [ c , d ] i\in[c,d] i[c,d] ,等概率随机地选择序列 b b b 的区间 [ e , f ] [e,f] [e,f] 中一个未配对的位置 j j j ,将序列 a a a 的 位置 i i i 和序列 b b b 的位置 j j j 配对
  • 计算出满足 a i = b j a_i=b_j ai=bj 的配对 ( i , j ) (i,j) (i,j) 的个数的期望
  • 每次询问互相独立
  • n ≤ 5 × 1 0 4 , q ≤ 1 0 6 n\le 5\times 10^4,q\le 10^6 n5×104,q106 n , q ≤ 1 0 5 n,q\le 10^5 n,q105 d − c ≤ f − e d-c\le f-e dcfe

  • r r r c c c 列的网格图,每行每列都有铁路
  • 每条铁路有费用
  • m m m 个点,第 i i i 个点坐标 ( x i , y i ) (x_i,y_i) (xi,yi) ,以及一个属性值 d i d_i di (忘了具体名称),表示在时间区间 [ 0 , d i ) [0,d_i) [0,di) 内穿越第 x i x_i xi 行和第 y i y_i yi 列的铁路不可用
  • 从一个点可以通过穿过该点的,可用的铁路到达该铁路上的其他点,代价为该铁路的费用
  • 其中 a a a 个点有机场,但第 i i i 个机场在时间区间 [ 0 , d a i ) [0,da_i) [0,dai) 内不可用
  • 如果两个点都有机场并且都可用,那么可以从一个机场花费 c a ca ca 的代价到达另一个机场
  • 不考虑乘坐交通工具和换乘的时间
  • q q q 个询问
  • 每次询问给定两个点 ( s x , s y ) (s_x,s_y) (sx,sy) ( e x , e y ) (e_x,e_y) (ex,ey)
  • (1)至少在第几天,你可以从 ( s x , s y ) (s_x,s_y) (sx,sy) ( e x , e y ) (e_x,e_y) (ex,ey)
  • (2)在(1)的前提下 ( s x , s y ) (s_x,s_y) (sx,sy) ( e x , e y ) (e_x,e_y) (ex,ey) 的最小费用
  • 除了与时间有关的数据为 1 0 9 10^9 109 级别,与费用有关的数据为 1 0 8 10^8 108 级别之外,剩余输入数据均为 1 0 5 10^5 105 级别

  • 给定两个长度为 n n n 的序列 A A A B B B A A A 中的元素位于 [ 1 , n + 1 ] [1,n+1] [1,n+1] B B B 中的元素位于 [ 1 , n ] [1,n] [1,n]
  • 每次操作你可以选择一个区间 [ l , r ] [l,r] [l,r] 和操作数 v ∈ [ 1 , n ] v\in[1,n] v[1,n]
  • A A A [ l , r ] [l,r] [l,r] 内的元素全部与 v v v min ⁡ \min min
  • 不超过 m m m 次操作之后, A A A 变成 B B B 的方案数
  • 同时操作序列需要满足任何一个严格前缀都不能把 A A A 变成 B B B
  • 换成人话,这个操作序列需要满足在最后一次操作时恰好把 A A A 变成 B B B ,在这之前 A A A 不能等于 B B B
  • n ≤ 100 n\le 100 n100 m ≤ 1 0 9 m\le 10^9 m109 A ≠ B A\ne B A̸=B
  • 出题人良心地给了容斥原理的公式

开题

  • 第一题先随便转化了下
  • ∑ i = 1 n c n t ( a , c , d , i ) × c n t ( b , e , f , i ) f − e + 1 \frac{\sum_{i=1}^ncnt(a,c,d,i)\times cnt(b,e,f,i)}{f-e+1} fe+1i=1ncnt(a,c,d,i)×cnt(b,e,f,i)
  • c n t ( s , l , r , c ) cnt(s,l,r,c) cnt(s,l,r,c) 表示 c c c 在序列 s s s [ l , r ] [l,r] [l,r] 区间里出现的次数
  • 想了一会儿发现一个询问可以拆成四个(拆成的询问即询问 a a a 的一个前缀和 b b b 的一个前缀)
  • 然后好像就是 sb 分块
  • 按顺序枚举左端点,考虑左端点从 i − 1 i-1 i1 变成 i i i 时,根据 a i a_i ai b b b 序列中的出现次数与 n \sqrt n n 的大小关系进行分情况处理
  • 复杂度好像是 O(n ^ (3 / 2) log n + qn ^ (1 / 2)) ?????
  • 过了 pretest 当作没事了
  • 然后又想到了各种奇怪的算法,多次算错复杂度,心态崩了
  • 开 T2
  • 发现可以 xjb 建图一波
  • 通过一些优化可以让图的规模为 O ( r + c ) O(r+c) O(r+c) 级别
  • 二分答案后判定能否到达,然后最短路计算最小花费
  • 53 53 53
  • 然后又发现没有机场时,最多拐 2 2 2 个弯
  • 然后 a = 0 a=0 a=0 的点可以上个小讨论???
  • 开始码码码
  • 码到一半又去开 T3
  • 看到出题人给的容斥公式,很快就有了一个 O ( 2 n × n ) O(2^n\times n) O(2n×n) 的暴力容斥做法
  • 如果操作要求不是最后 A i = B i A_i=B_i Ai=Bi 而是 A i ≥ B i A_i\ge B_i AiBi
  • 那么 m m m 次操作后满足条件的合法操作数为
  • ( n ( n + 1 ) 2 2 − ∑ i = 1 n ∑ j = i n max ⁡ k = i j B k ) m (\frac{n(n+1)^2}2-\sum_{i=1}^n\sum_{j=i}^n\max_{k=i}^jB_k)^m (2n(n+1)2i=1nj=ink=imaxjBk)m
  • m m m 操作最后每个 i i i 都满足 A i = B i A_i=B_i Ai=Bi 的方案数为 f ( m ) f(m) f(m)
  • 那么答案为
  • ∑ i = 1 m { f ( m ) − f ( m − 1 ) × t } = f ( m ) − ( t − 1 ) ∑ i = 1 m − 1 f ( i ) \sum_{i=1}^m\{f(m)-f(m-1)\times t\}=f(m)-(t-1)\sum_{i=1}^{m-1}f(i) i=1m{f(m)f(m1)×t}=f(m)(t1)i=1m1f(i)
  • 其中
  • t = n ( n + 1 ) 2 2 − ∑ i = 1 n ∑ j = i n max ⁡ k = i j B k t=\frac{n(n+1)^2}2-\sum_{i=1}^n\sum_{j=i}^n\max_{k=i}^jB_k t=2n(n+1)2i=1nj=ink=imaxjBk
  • 暴力容斥,强制一些 i i i 最后 A i A_i Ai 超过 B i B_i Bi ,于是 ∑ i = 1 m − 1 \sum_{i=1}^{m-1} i=1m1 后面的东西就可以用等比数列求和快速求出
  • 之前模拟赛题目好像有类似的题,时间不多了就没有花时间去认真想
  • 20 20 20
  • 这时候时间只剩下 1h
  • 去肛 T2 , 150+ 行码完,还有 36min 左右
  • 然而 T2 时限 6s ,在 OJ 上测了 6min ,居然有一个 27 27 27 分的 pretest 给 RE 掉了,心态再次崩
  • 不想去写 T2 的 a = 0 a=0 a=0 和 T3 的另外 15 15 15 分部分分( A i = 1 A_i=1 Ai=1 2 2 2 )了
  • 然而一直没有调出来,今天成功 146 146 146 滚粗
  • 要是 FST 就更凉了
  • 出考场发现 changle_cyx 、 Joky_02 两位选手都差不多
  • 心疼 Log_x 挂了 Day1
  • 晚上去开营式

Day 2 (from 8 : 00 : 00 to 13 : 00 : 01)

  • 没预料到 Day2 的难度会明显低于 Day 1

  • 一棵 n n n 节点的树,点有两个权值 c c c d d d ,边也有两个权值 a a a b b b
  • 对于一条 u u u v v v 的路径( u u u v v v v v v u u u 的路径是不同的)的代价为
  • ∑ e ∈ p a t h ( u , v ) min ⁡ ( c u + a e , d u + b e ) \sum_{e\in path(u,v)}\min(c_u+a_e,d_u+b_e) epath(u,v)min(cu+ae,du+be)
  • p a t h ( u , v ) path(u,v) path(u,v) u u u v v v 路径上的点集
  • 求对于所有 u ≠ v u\ne v u̸=v u u u v v v 的路径代价之和,模 1 0 9 + 7 10^9+7 109+7
  • n ≤ 5 × 1 0 5 n\le5\times10^5 n5×105 1 ≤ a , b , c , d ≤ 1 0 5 1\le a,b,c,d\le10^5 1a,b,c,d105

  • 交互题
  • 交互库有一棵 n n n 节点的树
  • 可以调用两个函数
  • feature1(int m, int *a)
  • 找到一个点 u u u ,使得大小为 m m m可重点集 a a a u u u 的距离之和最小,返回最小距离
  • feature2(int m, int *a)
  • 找到一个点 u u u ,使得大小为 m m m可重点集 a a a u u u 的距离之和最小,返回点 u u u 编号
  • 以上两个函数的复杂度均为 O ( m ) O(m) O(m)
  • 无聊看了看交互库,发现这两个函数用虚树 DP 实现
  • 在有限的两个操作次数下求出这棵树
  • n ≤ 4000 n\le 4000 n4000
  • l i m 1 ≥ 3999 , l i m 2 ≥ 3997 lim_1\ge 3999,lim_2\ge 3997 lim13999,lim23997 l i m 1 ≥ 100000 , l i m 2 = 0 lim_1\ge 100000,lim_2=0 lim1100000,lim2=0
  • l i m 1 lim_1 lim1 l i m 2 lim_2 lim2 分别表示两个函数的调用次数上限

  • 给定 n n n 个点的平面点集
  • 找出一些至少 3 3 3 个点,能连成凸多边形并且没有三点共线的点集连成凸多边形
  • 求所有合法凸多边形面积的平均值和方差
  • n ≤ 400 n\le 400 n400

开题

  • 根据以往经验,马上就怀疑 T2 和 T3 是不可做题
  • 发现 T1 将 c u + a e ≥ d u + b e c_u+a_e\ge d_u+b_e cu+aedu+be 移项后为 c u − d u ≥ b e − a e c_u-d_u\ge b_e-a_e cudubeae
  • 然后怎么做都行,是不是就我写了辣鸡的点分治 + BIT
  • 写 + 调用了 2h
  • 然后去 T2 和 T3 码完了暴力,这时 pretest 166 p t s 166pts 166pts
  • 最后发现 T3 还有 17 p t s 17pts 17pts (每个点的 x x x 坐标或 y y y 坐标为 0 0 0
  • 而我们只需要知道方案数、面积和、面积平方和
  • 合法的多边形只会是三角形和四边形
  • 然后写个二维前缀和碾过去这个子任务,现在 183 p t s 183pts 183pts
  • 竟然没注意到 T2 中查询的集合是可重集
  • 出考场,和昨天一样, changle_cyx 和 Log_x 都和我差不多
  • 心疼 Joky_02 挂了 Day2

Day 2+ (from 18 : 00 : 00 to 21 : 00 : 01)

  • 工业题
  • PNG 图像处理
  • 2 2 2 个 task 是和编码有关的东西,看完资料后直接过掉, 20 + 30 20+30 20+30
  • 3 3 3 个 task 是读入 PNG 图像输出图像规模以及每个像素的 RGB 值
  • 开始泛看资料
  • 遇到一些看不懂的东西立刻心态崩
  • 多次把 bit 和 byte 看错
  • 期间一直喝水让自己冷静下来
  • 转笔的时候把笔转到了隔壁桌下,出考场后忘了拿
  • 最后发现 OJ 上还有 pdf
  • 利用 pdf 之后,感觉这些东西好像容易懂了一些
  • 然后仍然码码码
  • 因为输出格式问题调了好久,药丸
  • 然后看 task 4 4 4
  • 读入图像规模以及每个像素的 RGB 值输出 PNG 图像
  • 我开始后悔把 task 1 1 1 和 task 2 2 2 的程序删掉了
  • 好像计算编码长度和转码等也有不少细节
  • 这时比赛时间剩余不多
  • (接下去的情节省略)
  • 3h 的时间只搞出了 3 3 3 个 task ( changle_cyx :这种题 3h 的时间怎么够用啊!)
  • changle_cyx 也是前 3 3 3 个 task , 100 100 100
  • 感觉这个初三小朋友要稳稳稳稳稳稳稳稳
  • 虽然只 A 掉了 3 3 3 个 task ,但这题让我体会到了计算机的奥秘 ,还是不错的题
  • pretest : 146 + 183 + 100 = 429 146+183+100=429 146+183+100=429

Day 3

  • 通知面试
  • 在念完 3 4 \frac 34 43 的面试选手之后念到自己的名字,真刺激
  • 据说面试的线是 350 350 350
  • 在等待面试的地方闲着无聊用了一下教室里的 NOI Linux
  • 发现 luogu 登录不了也显示不了最左边的选项,毒瘤
  • 于是去 Codeforces 和 UOJ 上瞎逛
  • 面试的同时 gzez 的报告厅里正在讲题
  • 这时我又想快点面试又想迟些面试
  • 不过我很快就被面到了
  • 先 3min 自我介绍
  • 然后能记清楚的是一道数学题
  • 60 60 60 个数,每个数取 [ 1 , 100 ] [1,100] [1,100] 内的整数,求证存在 4 4 4 个数之和为 202 202 202
  • 鸽巢原理,使用构造法即可证明(前 4 4 4 个数取 1 , 2 , 100 , 98 1,2,100,98 1,2,100,98 ,以此类推)
  • 还有一篇英语短文
  • 自己不会的单词都是强行碾过去,药丸
  • 大概是讲述一个 NP 完全问题——图的最长简单路径
  • 然后面试老师就问到我常用的最短路和最长路算法
  • 然后我回答 Floyd 、 Dijkstra 、 SPFA ,还说了之前认为 SPFA 能跑 1 0 5 10^5 105 级别的图,但后来发现这种算法在最坏复杂度下过不去,会被构造的图卡,于是改用更稳定的 Dijkstra 求解,但 SPFA 对于判定负环还是有用的
  • (省略大部分)
  • 回来发现出题人已经讲完了 Day1 T1 ,以及 Day 2+ 的大部分
  • 印象最深的还是出题人的一句话,编一下大概是
  • “对 PNG 方面知识和计算机常识有一定了解的选手可以较快地拿到此题的高分。”
  • 然后出题人说 Python 3 有读入和输出图像的功能?!?!?!?
  • 然后 Day1 T1 的出题人是神仙 wuvin ,正解复杂度 O ( n q ) O(n\sqrt q) O(nq )
  • Day1 T2 是个大力分类讨论,即讨论机场的经过个数以及转弯个数然后大力维护一些奇怪的东西,直接二分答案求解
  • 居然还能有人 A
  • Day1 T3 果然是一个思路非常棒的数学题,好评!
  • 具体做法 xyz32768 就不放了
  • 只是不知道这 O(n ^ 4) 的正解复杂度是怎么在 n = 100 时卡进 1s 的
  • Day2 T1 跳过
  • Day2 T2 中,允许 feature2的点可以选根后确定每个点的深度,然后
  • f a t h e r ( u ) = f e a t u r e 2 ( S ( d e p − 1 ) + u × ∣ S ( d e p − 1 ) ∣ ) father(u)=feature_2(S(dep-1)+u\times|S(dep-1)|) father(u)=feature2(S(dep1)+u×S(dep1))
  • 其中 S ( d e p ) S(dep) S(dep) 为深度为 d e p dep dep 的点的集合
  • 没注意到可重的选手开始后悔
  • 其余略
  • Day2 T3 ,出题人还是神仙 wuvin 凯老师
  • Day2 T3 竟然有一个 O ( n 4 ) O(n^4) O(n4) 的 sb DP 没有去想。。。。。。
  • 枚举凸包最下(相同情况下最左)的点之后, f [ i ] [ j ] f[i][j] f[i][j] 表示最后两个点为 i i i j j j (要存三个东西:方案数、面积和、面积平方和)
  • 然后大力转移 O ( n 4 ) O(n^4) O(n4)
  • 转移时将 i i i 进行极角排序之后前缀和优化 DP 可以 O ( n 3 ) O(n^3) O(n3)
  • 下午,还是在 gzez 报告厅,讲述 THUSAAC 、计算机的应用、 AI 等东西
  • 手机发弹幕发到没电
  • 让我印象最深的还是 PPT 上提出的问题:你为什么选择信息学奥赛?
  • 当然我手机没电回答不了
  • “好玩!”
  • “不想念文化课!”
  • “不想高考!”
  • 本来 16 : 30 发约延迟了 1h
  • 二等
  • orz changle_cyx ,一等
  • 感觉一堆人 500 + 500+ 500+

题目分析 & 自我体会

  • Day1 T1 和 Day2 T1 作为两道送分题, A 掉的人数一半以上,没有区分度
  • 个人认为区分度主要还是在 Day1 T2 和 Day1 T3 (虽然不知道得分情况)
  • 而这两题中
  • 代码量主要集中在 T2
  • 思维量主要集中在 T3
  • 而 Day2+ 考试时间只给 3h 真的不够用
  • 我觉得回去还要练练代码能力
  • 以及比赛中合理的时间分配心态考场策略
  • 忽然又想起来 APIO 2018 新家 这道数据结构题 3 天都没去调
  • 接下去全力备战省选以及两场娱乐性质的比赛

你可能感兴趣的:(Other)