zoukankan      html  css  js  c++  java
  • THUSC 2021 游记

    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 涉及巨大多科技,看懂就花了半个小时。最后半个小时知道自己写不出来,就开始很悠闲地写,最后两分钟得到了一个输出全黑图片的程序。


    下午讲题。主办方非常咕,提前溜了。

    知识共享许可协议
    若文章内无特别说明,公开文章采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。
  • 相关阅读:
    oracle 导入数据时提示只有 DBA 才能导入由其他 DBA 导出的文件
    oracle 常用语句
    android udp 无法收到数据 (模拟器中)
    android DatagramSocket send 发送数据出错
    AtCoder ABC 128E Roadwork
    AtCoder ABC 128D equeue
    AtCoder ABC 127F Absolute Minima
    AtCoder ABC 127E Cell Distance
    CodeForces 1166E The LCMs Must be Large
    CodeForces 1166D Cute Sequences
  • 原文地址:https://www.cnblogs.com/wallbreaker5th/p/14778279.html
Copyright © 2011-2022 走看看