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

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

  • 相关阅读:
    win7(windows 7)系统下安装SQL2005(SQL Server 2005)图文教程( Win7 SQL Server2005 安装教程)
    PL/SQL -->隐式游标(SQL%FOUND)
    sql%found sql%notfound sql%rowcount sql%isopen
    C# WINFORM 窗体执行ORACLE存储过程 进行增删改查 自己编写借助网络(二)
    C# WINFORM 窗体执行ORACLE存储过程 进行增删改查 自己编写借助网络
    .net 接收存储过程的返回值 。。。。
    oracle-扫盲贴:存储过程实现增删改查
    sql加一个%号是什么意思
    关于ExecuteNonQuery执行存储过程的返回值 、、实例讲解存储过程的返回值与传出参数、、、C#获取存储过程的 Return返回值和Output输出参数值
    iOS网络请求之数据解析
  • 原文地址:https://www.cnblogs.com/nealchen/p/15700340.html
Copyright © 2011-2022 走看看