惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Jina AI
Jina AI
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
有赞技术团队
有赞技术团队
罗磊的独立博客
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
U
Unit 42
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Recent Announcements
Recent Announcements
Y
Y Combinator Blog
Vercel News
Vercel News
Martin Fowler
Martin Fowler
V
V2EX
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
L
LangChain Blog
云风的 BLOG
云风的 BLOG
H
Hackread – Cybersecurity News, Data Breaches, AI and More
aimingoo的专栏
aimingoo的专栏
G
Google Developers Blog
The GitHub Blog
The GitHub Blog
N
Netflix TechBlog - Medium
Google DeepMind News
Google DeepMind News
雷峰网
雷峰网
阮一峰的网络日志
阮一峰的网络日志
F
Fortinet All Blogs

博客园 - nealchen

无需 Path Measure,也能轻松推出 Diffusion ELBO 🌊 LangFlow: 连续扩散语言模型,首次匹敌离散 CTMC ELBO 的另一个证明 【Remix】拆解 DDIM 论文【扩散模型加速采样】 二元多项式求逆中的小坑 NOI2020乱搞记 [ZJOI2020]字符串 Ubuntu 20.04 工作区小记 2020省选犯傻记 AtCoder tokiomarine2020 题解 [CF1336E]Chiori and Doll Picking [JOISC2020]遗迹 积性函数求和:构造狄利克雷卷积将值域限定于powerful number [UR19B]通用测评号 另解 积性函数求和:筛法DP、洲阁筛、Min_25筛 最大权完美匹配:KM算法的优化 代数余子式和伴随矩阵 生成树计数:矩阵树定理 [AGC024F]Simple Subsequence Problem 区间最值问题(RMQ):压位分块稀疏表
CCSP2021游记
nealchen · 2021-12-16 · via 博客园 - nealchen

流水账也没人爱看,就写三个小故事吧。

报名

说到CCSP, 首先要说CSP. CCSP之于CSP, 大概类似于NOI之于NOIP.

CSP,对于OIer来说它的身份大概是NOIP筹款赛所挂靠的本体。OIer朋友们都没有来报名,不过我听说清华算协有名额,反正也就一下午的事,就报名了。进场后花了两小时AK。

后来比赛部的Kay学长来找我,说有CCSP名额。不过看到CCSP添加了“系统”的竞赛方向,我还是有点犹豫的。当时我想,反正报名了,名额有限也不一定挑上我;就算挑上我了,反正今年大一,时间还比较充裕,今年不去,以后可能没时间体验了呢?于是我就报名了。

然后比赛部就通知我入围了。

文件缓存

这是CCSP2021的第四题,是一道系统优化题,其实完全是我的盲区;但是机缘巧合,它成为了我得分最轻松与最得意的一题。

要求实现一个多用户单线程文件缓存,与传统缓存相比多了一个文件大小的维度。我随手翻了翻学长给的缓存资料,决定采用LRU(最近最少使用)【后来学长告诉我这叫做LFU】的替换策略,用户不管了。怎么表示“最近”呢,我就让第 $t$ 次操作对使用次数的贡献为 $1.001^t$, 其实我不知道这 $1.001$ 有没有效果。然后我算了算:假设文件 $a, b$ 大小分别为 $s_a, s_b$, 使用频率分别为 $f_a, f_b$. 那么 $a$ 约能替换 $s_a/s_b$ 个 $b$, 如果替换,命中率上的增益估计为 $f_a-(s_a/s_b)f_b$, 也就是可以比较 $f_a/s_a$ 与 $f_b/s_b$ 的大小。按照 $f/s$ 的比较法则来做,交上去有77分。

评分还有一个维度,即缺失损失,一次缺失代价为文件大小加一常数。常数项显然是命中率的另一种说法,因此只需考虑文件大小。如果仍然按上述替换的话,节约的损失估计为 $f_as_a-(s_a/s_b)f_bs_b$, 也就是直接比较 $f_a$ 与 $f_b$ 的大小。综合二者,我随手敲了一个 $f/\sqrt{s}$ 的比较法则,交上去的时候获得了88分。这一分数到最后也仅仅衰减到了87.35, 可能是全场最好的得分了。

本题总共花了我半小时不到。

量子电路

这是CCSP2021的第三题,是一道大模拟。写题的过程贯穿了长达12小时的比赛全程。

本题要求依照题目的指引,实现简单的量子电路模拟器。巧合的是,我上次到深圳来,是到地点相近的腾讯星火计划,学了怎么设计量子电路。

中午两点之前,我实现了前两个任务,拿到了57分。中间去解决了一下第二题,接着做本题后面的两个任务。虽然做法都理解,写起来却是难点不断。

一开始对着样例调,调到吃晚饭的时候样例都过了,但是提交上去仍然颗粒无收。出去吃了个饭回来,想到可以用编译参数卡出问题来。于是本地开了-O2, 然后加了-fsanitize=undefined, 发现数组开小了。交上去还是过不去,核对一下原题发现数据范围看错了,改完多过了20分,死活调不出来就去看了剩下的第四、第五题。

封榜以后回来接着攻剩余的23分,打算写对拍。先写数据生成器,在敲下1<<n的时候,突然反应到其中n最大可达34. 于是我立即发现并更正了一个34比特整数用int存储的bug,就A了。

第二天把这个故事跟腾讯星火计划的工作人员小姐姐们讲了,她们热情地接我到腾讯滨海大厦游览。