Day 2459350
早上去报道,分在了西溪校区。(据说分校区是按照进省队次数奇偶性分的。)中午必须在食堂吃,而且一次饭 30 元。/kk
然后去试机,感觉试机题都挺水的。
T1 | A+B Problem
rt。没写数据范围。
T2 | 维克托 | vector
模拟一个 vector
插入数、删除数,并保持其单增的过程。计算每次操作“移动已有元素的次数”。
具体来讲,vector
会有一个大小及容量,初始分别为 (0) 和 (2)。插入一个数时,若新的大小大于容量,容量翻倍,移动元素个数等于原大小;否则在尽可能靠后的地方插入该数,并将其后的元素顺移。删除一个数时,若新的大小小于等于容量的 (1/4),容量减半,移动元素个数等于新大小;否则删除该数尽可能后的出现位置,并将其后的元素顺移。
(nleq 10^4)。
1 s。
T3 | 李斯特 | list
维护一序列,保证其无重复元素。支持:
- 在一个数之后插入一个数;
- 查询一个数是否在序列中;
- 查询一个数的后继;
- 删除一个数;
- 输出序列;
- 清空序列;
- 反转序列;
- 好像还有一个但是记不清了。
(n,mleq 10^6),(a_ileq 10^7)。
? s。
先写了 A+B,然而 A+B 没有数据范围,开了 long long
过了 pretest,快进到 FST。
T2 的小模拟有个 for
写反了,调了一会。
T3 拿 list
做一做就行,一边过了。
中途还发现系统某些页面的时间是 8:00,于是做了一个 bug report。
同考场的 asd ssh -v
,很快啊,各个监考人员都来了。
下午 Day 1。
T1 | 搬东西 | move
有 (n) 个物品,依次编号,各有体积。有一背包,一次至多装下体积和为 (m) 的物品。每一轮,从剩余物品中取出尽可能多的物品;若物品个数相同,优先选择编号在升序排列后字典序最大的一种。问多少次取完所有物品。
(nleq 50000,mleq 10^9)。
2.5 s,1024 MB。
T2 | 白兰地厅的西瓜 | watermelon
给定一树,点有点权。求各路径的最长上升子序列的最大值。
(nleq 10^5,a_ileq 10^9)。
1 s。
T3 | Emiya 家明天的饭 | emiya
有 (n) 个客人,(m) 道菜。每个客人有一些喜欢、不喜欢的菜。你要选定一个菜的集合,若其包含一个客人不喜欢的菜,他会离开;对于没有离开的客人 (i),他会为 第 (j) 道菜给 (a_{i,j}) 元的红包。最大化红包和。
(nleq 20,mleq 10^6)。
3 s。
T4 | 种树 | planttree
通信题。用 __int128
编码一棵树(无标号,有根,儿子有序)。(m) 组询问。
(nleq 70,mleq 10^5)
1 s。
T1 花了几分钟胡了个做法,先写了个把数据结构替换成暴力的做法。看了一会后面的题之后又回来写 T1 的树套树,卡了卡常过了。
整完 T1 去写了 T2 的暴力,写完感觉正解是点分治,于是把一个玄学做法强行套了一层点分治做;写到一半感觉不一定写得出来,赶紧写 T3 T4 暴力。接着回到 T2,写到考试只剩半小时,正确性过了,但 TLE 了。又看了一下 T4 只有两个儿子的部分分,于是写了一发结果 TLE 了,最后 pretest 200 当场暴毙。/kk
Day 2459351
T1
实现 bmp
文件的写。
T2
给定空间中的一个三角形和一条射线(有向直线),判断射线是否与三角形相交,返回射线起点与交点的距离,并给出交点、法向量。
库提供了:
- 三点确定一平面;
- 确定射线与平面的交点;
- 求三角形面积;
- ……
(渲染会得到 cornell box 场景的深度图。)
自此之后所有题目均提交渲染出的位图而非代码。
T3 / T4
实现给定光源位置、漫反射表面上一点,求光源对该点亮度的贡献。(从而实现漫反射表面)
实现给定法向量、入射光方向,求反射光方向。(从而实现镜面反射表面)
(渲染分别会得到
- cornell box 场景;
- 几个球,有的球是镜面反射。)
T5
给定俯仰角、偏航角、相机矩阵,求方向向量。(从而实现全景相机)
(渲染会得到 T4 的全景图。)
T6
给定方向向量,求俯仰角、偏航角。(从而实现球面贴图)
(渲染会得到一张世界地图,其中北京所在经线位于中央,且有晨昏线效果;附赠了一张从广东上空俯视地球的图。)
T7
实现理想漫反射模型的路径追踪部分。由于漫反射时的积分是用蒙特卡洛法计算的,图片收敛会较慢。
若实现了直接光照,这题可以更快收敛。
(渲染会得到更优质的 cornell box 场景。)
T8
优化射线与模型求交的过程,使之渲染得更快。
(渲染会得到斯坦福兔子。)
开局先读一下 T1 和 guide.pdf
的前言,得知要做光线追踪。再看了一下题目之间的依赖关系,整体上是后面的依赖前面的。
T1 题面把做法描述得很清楚了,用 fwrite
来做就行了。结果有一堆细节写挂,肉眼看图片又看不出问题,diff
有有差异。直到拿 Python 对着文件头比较才看出锅。
看了一眼 T2 发现是奇妙计算几何,由于不会赶紧去看 math&geometry.pdf
,发现里面完全是手把手教学;里面没有教三点确定平面,到 .h
里逛了一圈,看到里面啥都有,于是写了一会就过了。
T3 T4 的题面开始看不懂了,于是去读手册。先写了 T3,得到的结果尽是纯黑纯白;由于不知道 T4 依赖于 T3,加之 T3 渲染特别慢,于是去做 T4,一直看着很对劲但是就是过不了。回过去看 T3 求 (cos) 的函数,发现少除了一个 (|vec b|),改完发现 T4 对劲了。(地面颜色看得出来了)于是渲染一波 T3,也过了。
T5 是个简单三角函数;一开始没有乘相机矩阵,导致相机位置不对,看不到地面。
T6 几乎就是 T5 反过来,由于符号问题产生了一堆奇怪地图。
做到 T7 还剩一个小时,但 T7 涉及巨大多科技,看懂就花了半个小时。最后半个小时知道自己写不出来,就开始很悠闲地写,最后两分钟得到了一个输出全黑图片的程序。
下午讲题。主办方非常咕,提前溜了。