zoukankan      html  css  js  c++  java
  • CCSP2021游记

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

    报名

    说到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了。

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

  • 相关阅读:
    Java实现 蓝桥杯VIP 算法训练 字符串逆序
    Java实现 蓝桥杯VIP 算法训练 字符串逆序
    Java实现 蓝桥杯VIP 算法训练 最长字符串
    Java实现 蓝桥杯VIP 算法训练 最长字符串
    Java实现 蓝桥杯VIP 算法训练 最长字符串
    Java实现 蓝桥杯VIP 算法训练 最长字符串
    Java实现 蓝桥杯VIP 算法训练 最长字符串
    Java实现 蓝桥杯VIP 算法训练 成绩的等级输出
    Java实现 蓝桥杯VIP 算法训练 成绩的等级输出
    Qt 自定义model实现文件系统的文件名排序
  • 原文地址:https://www.cnblogs.com/nealchen/p/15700340.html
Copyright © 2011-2022 走看看