DAY1
开场先看 t1,发现答案的分子就是 (sum_i) 颜色 (i) 在 A 中的出现次数乘上颜色 (i) 在 B 中的出现次数,分母就是 B 的长度,就去写了一个按颜色的出现次数分类的东西,复杂度为 (O(nsqrt q+qsqrt n)),交上去直接 pp 了。
然后去看 t2,感觉是个分类讨论题,想了一下感觉第一问还是很可做的,就去写第一问了。
过了一会发现 A 题空间是 (O(qsqrt n)) 的,就去改成了 (O(nsqrt n)) 的。
然后就去把 t2 的第一问写完了。
接着就去做 t3 了,先把暴力写了,然后看了一下提示,说是要容斥。想了一会并没有想到怎么容斥。
被打爆了。
pt 分:(100+60+10=170)
出来后欧稳欧、zjt 都说 t3 是傻逼题。
晚上鸽了开幕式去睡觉了。
DAY2
先看了 t1,感觉可以点分。过了一会发现直接线段树合并就好了(当然也可以离线树状数组),花了半个小时写了一下交上去就 pp 了。
t2 看到 feature2
可以把重心求出来就去想点分了。怎么想都只会 (O(nlog^2n)) 的垃圾做法。写完后交上去直接过了除了 (lim1=3999,lim2=3997) 的点。然后构造了几组数据卡了卡常,就没管了。
t3 我好像之前看过类似的题,想了一下,直接对凸包的最后一条边DP是 (O(n^4)) 的,按极角排一下序就 (O(n^3)) 了。于是就花了半个多小时写完了。感觉还是挺好写的。
然后回来看 t2,发现还是不会。
被打爆了。
pt 分:(100+79+100)
出来后 zjt 又说 t2 是傻逼题,只要没去想点分治,一层层做就 win 了。
DAY2+
8 个图像处理题。
- 计算一个序列的 ADLER32 校验码(20分)
- 计算一个序列的 CRC32 校验码(30分)
- 读取简单 PNG 图片(50分)
- 写入简单 PNG 图片(50分)
- sobel 算子 边缘检测(20分)
- halton 序列 随机采样(20分)
- 基于像素的纹理合成(30分)
- 基于块的纹理合成(80分)
开场翻了一下手册,感觉要从前往后做。
先花了半个多小时把前两个点写了,然后花了一个半小时搞中间两个点,最后剩下一点时间把第五个点写了。
感觉前面几个点都没什么技术难度,把文档读完然后对着文档写就好了。
读文档一定要仔细,有几个同学就因为读漏了某些条件被坑了。
感觉正常人都不太能写得完。。。我只写了前面五个点。神仙 zjt 写完了前面七个点。
DAY3
上午在报告厅听讲评,顺便和神O、神J、麦老大、老K聊天。讲题人说两天的 t3 都只有个位数的人过。
下午听学长们介绍算协、科协,听 LazyJazz 讲提前上学、光线追踪、写游戏,还有清华老师吹水。然后就发协议奖状了。
今年因为某些原因,不能直接发协议,只能先发奖状。
题解
DAY1
A
显然答案的分子就是 (sum_i) 颜色 (i) 在 A 中的出现次数乘上颜色 (i) 在 B 中的出现次数,分母就是 B 的长度。
把询问拆成四个前缀的询问,然后直接莫队就好了。
块大小设为 (O(frac{n}{sqrt q})),复杂度为 (O(nsqrt q+qlog q))。
B
大力分类讨论。
C
先把第一次 (A=B) 就停止变成要求 (m) 次操作后 (A=B)。
记 (f(i)) 为第 (i) 次操作后 (A=B) 且前面都不满足要求的方案数,(g(i)) 为第 (i) 次操作后 (A=B) 的方案数,(w) 为 (A=B) 之后每次操作可选的方案数,就有 (f(i)=g(i)-wg(i-1)),求一下和就有 (sum_{i=1}^m f(i)=sum_{i=1}^m g(i)-sum_{i=0}^{m-1}wg(i))。
然后容斥,枚举最终有多少个 (i) 不满足 (a_i=b_i),然后就是要求:某些点 (a_igeq b_i),某些点 (a_i>b_i) 的方案数。
对于每一个 (b_i) 的值分别DP。
每一层记 (h_{i,j}) 为考虑了前 (i) 个位置,不合法的区间个数为 (j) 的方案数(乘上容斥系数)。因为合法区间个数是 (O(n^3)) 的,不合法的区间个数只有 (O(n^2))。转移的时候枚举下一个位置是选 (b_i) 还是选 (b_i+1),直接多项式乘法即可。
时间复杂度:(O(n^4))。
DAY2
A
对于每一条边 (i),计算子树内有多少个点 (j) 满足 (a_i+c_jleq b_i+d_j) 以及 (c_j)、(d_j) 的和。子树外同理。
然后随便搞搞就好了。
B
先用 (n-1) 次 feature1
算出每个点的深度,然后对于每个点求它的父亲是上一层的那个点,每个点求父亲可以用一次 feature2
或 (O(log n)) 次 feature1
操作完成(要注意到询问的集合是可重集)。
C
(overline{x}=frac{sum x}{m},sigma^2=frac{x^2}{m}-{(frac{sum x}{m})}^2)。这样就只用计算方案数、面积和、面积的平方和了。
DP出下凸壳的两个端点为 (i,j) 的方案数:记 (f_{i,j,k}) 是左端点为 (i),最后两个点为 (j) 和 (k) 的信息。转移时枚举下一个点 (l),判断是否可行,转移到 (f_{i,k,l})。按极角排序一下然后用双指针扫一下可以优化到 (O(n^3))。
然后把两个凸壳拼在一起就好了。
DAY2+
对着文档码码码就好了。