THUWC2019 游记

DAY1

  开场先看 t1,发现答案的分子就是 \(\sum_i\) 颜色 \(i\) 在 A 中的出现次数乘上颜色 \(i\) 在 B 中的出现次数,分母就是 B 的长度,就去写了一个按颜色的出现次数分类的东西,复杂度为 \(O(n\sqrt q+q\sqrt n)\),交上去直接 pp 了。数组

  而后去看 t2,感受是个分类讨论题,想了一下感受第一问仍是很可作的,就去写第一问了。优化

  过了一会发现 A 题空间是 \(O(q\sqrt n)\) 的,就去改为了 \(O(n\sqrt n)\) 的。spa

  而后就去把 t2 的第一问写完了。指针

  接着就去作 t3 了,先把暴力写了,而后看了一下提示,说是要容斥。想了一会并无想到怎么容斥。code

  被打爆了。排序

  pt 分:\(100+60+10=170\)游戏

  出来后欧稳欧、zjt 都说 t3 是傻逼题。图片

  晚上鸽了开幕式去睡觉了。文档

DAY2

  先看了 t1,感受能够点分。过了一会发现直接线段树合并就行了(固然也能够离线树状数组),花了半个小时写了一下交上去就 pp 了。图像处理

  t2 看到 feature2 能够把重心求出来就去想点分了。怎么想都只会 \(O(n\log^2n)\) 的垃圾作法。写完后交上去直接过了除了 \(lim1=3999,lim2=3997\) 的点。而后构造了几组数据卡了卡常,就没管了。

  t3 我好像以前看过相似的题,想了一下,直接对凸包的最后一条边DP是 \(O(n^4)\) 的,按极角排一下序就 \(O(n^3)\) 了。因而就花了半个多小时写完了。感受仍是挺好写的。

  而后回来看 t2,发现仍是不会。

  被打爆了。

  pt 分:\(100+79+100\)

  出来后 zjt 又说 t2 是傻逼题,只要没去想点分治,一层层作就 win 了。

DAY2+

  8 个图像处理题。

  1. 计算一个序列的 ADLER32 校验码(20分)
  2. 计算一个序列的 CRC32 校验码(30分)
  3. 读取简单 PNG 图片(50分)
  4. 写入简单 PNG 图片(50分)
  5. sobel 算子 边缘检测(20分)
  6. halton 序列 随机采样(20分)
  7. 基于像素的纹理合成(30分)
  8. 基于块的纹理合成(80分)

  开场翻了一下手册,感受要从前日后作。

  先花了半个多小时把前两个点写了,而后花了一个半小时搞中间两个点,最后剩下一点时间把第五个点写了。

  感受前面几个点都没什么技术难度,把文档读完而后对着文档写就行了。

  读文档必定要仔细,有几个同窗就由于读漏了某些条件被坑了。

  感受正常人都不太能写得完。。。我只写了前面五个点。神仙 zjt 写完了前面七个点。

DAY3

  上午在报告厅听讲评,顺便和神O、神J、麦老大、老K聊天。讲题人说两天的 t3 都只有个位数的人过。

  下午听学长们介绍算协、科协,听 LazyJazz 讲提早上学、光线追踪、写游戏,还有清华老师吹水。而后就发协议奖状了。

  今年由于某些缘由,不能直接发协议,只能先发奖状。

题解

DAY1

A

  显然答案的分子就是 \(\sum_i\) 颜色 \(i\) 在 A 中的出现次数乘上颜色 \(i\) 在 B 中的出现次数,分母就是 B 的长度。

  把询问拆成四个前缀的询问,而后直接莫队就行了。

  块大小设为 \(O(\frac{n}{\sqrt q})\),复杂度为 \(O(n\sqrt q+q\log 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_i\geq 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_j\leq 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+

  对着文档码码码就行了。

相关文章
相关标签/搜索