CSP-S 游记
Day0
“赛前打模拟赛会失去信心怎么办?”
“给别人搬模拟赛,你会获得他们失去的信心。”
Day 1 上午
睡觉。太困了。睡觉。睡不着?
开考前
很快就坐上了学校的大巴,并且于
我是
进考场后发现:这是不是一个会议室啊?里面全是六人桌,正好给
貌似这个“机房”可以坐下
开考前 2.0
众所周知 CSP-S 从
人杰地灵
做题心态
看到 T1,这不是我们亲爱的 AGC018C 吗?于是我有了以下思路:
先假设每个人都去部门
1 ,然后再用a_1 - a_0 或a_2 - a_0 的代价去调整。调整过程可以用
priority_queue维护,并且进行反悔贪心。
然后我忘了 AGC018C 当中是对
开两个
priority_queue分别对a_1 和a_2 从大到小维护,如果某个部门大小已经\ge \frac{n}{2} ,那么:
- 不进行替换,因为当前比已经进入该部门的任意一个都不优。
- 把原本的一个放到另一个部门,相当于将其弹出然后插到另一个
priority_queue- ……
然后我惊恐地发现,这东西怎么一堆 Corner Case 啊?并且对着这个错误做法想了
然后花了
T2 肯定是先把原图的 MST 建出来,然后边数就是
等等,为什么要
能!这样我们只需要实现一个
直接
void merge(int l, int r)
{
if (l >= r)
{
return;
}
int mid = (l + r) >> 1;
merge(l, mid);
merge(mid + 1, r);
inplace_merge(g + (l - 1) * n + 1, g + mid * n + 1, g + r * n + 1);
}
赛后发现大脑宕机了,其实只要初始时把
T3 做的还是比较顺利,很快想到 ACAM 做法。但是 ACAM 不是超纲了吗?无所谓,好写就行。
但是这个 ACAM 有 int 仅仅需要
于是我发现,我可以用 map 存出边,并且与一般的 ACAM 不同,我只需要维护每个点的 fail 指针(而不需要把不存在的子节点从 fail 指针那里拉过来)。势能分析一下就是对的。
大样例貌似跑的很快,但是显然它没有造满。
T4 不会啊!
回顾一下,发现其实是陷入了这么一个误区:
每个
c 相等的人肯定是等价的,所以可以将他们视作相同的人,最后乘上对应的阶乘即可。所以,我们尽量一次操作把所有
c 相等的人加进排列。自然而然就是对每个
c 值进行插板。
这样,也就只能过过 A 性质,拼好分罢了。
其他感受
在离考试结束还有
等到
等到
这件事和我坐在
请考生新建一个以自己名字为题的文本文档,里面包括考号、学校、指导老师、提交的程序等,该文档的格式没有特殊要求。
至少
至于为什么,在考试结束前,监考员突然走下了,一个一个地提醒我们,叫我们打开注意事项,指向了这一行字,然后看着我们建完文件之后才走。
我旁边的人可能不太熟悉这个文件格式(不是说没有格式吗),结果被监考员亲切的指导了半天。我还听到了“等会我再过来检查一下”。
今年的 checker.exe 怎么还要选手自己配置?
赛后交流
出考场了,遇到一个学长理论分数比我高
经过讨论得到,T3 大样例只有
这个 T4,原来和 Club of Young Aircraft Builders 这么像!我们年级有
测评机是
一个大神考委了,只有
“震惊:某学生竟然要在 NOIP 之前退役!”
当然这是假的。