FOI 2019 游记

Day -3 and -2

打 FZYZ 的 NOIP-TG 模拟,发现自己弱得一匹。。。

Day 1

今天是一中的 chj2001 大佬讲数论。

然而有一个老师注意事项讲得太久,我看他的手指都一直在敲桌子

最后拖课了将近半小时

听课还好

下午测试,但是并不怎么样

开题,T1 调了一个多小时,结果没有调出来,就把输出样例搞了一下就交上去了

T2 看起来递推可以得部分分,但是我的程序只能过最弱智的部分分。。。

然后赛后讲评的时候,我们集体走错场地(包括老师)

这是老师 PPT 里的一句话:

这个样例,无疑是善良的出题人无私的馈赠。大量精心构造的 n ≤ 100, m ≤ 200 的测试数据,涵盖了测试点中所有出现性质的组合。
你可以利用这个测试点,对自己的程序进行全面的检查。足量的数据组数、不大的数据范围和多种多样的数据类型,能让程序中的错误无处遁形。
出题人相信,这个美妙的样例,可以给拼搏于 AC 这道题的逐梦之路上的你,提供一个有力的援助。

赛后成绩只有 10+10+0=20,RK 71,还是太弱了

Day 2

今天是附中的 ditoly 大佬讲数结。

课貌似还是听得懂的,最难的莫非 zkw 线段树。

ditoly:今天下午的题目很简单;我:……

中午 11:30 就到机房了。

然后花半小时打了 luogu P3372 的线段树、树状数组、分块的做法,感觉还可以。

又花了一些时间学了 Trie.

13:30 准时开题。

T1 我本来想用 std::set 打暴力,然而我的迭代器炸了,只能用数组勉强打一个。

T2 本来暴力是 $O(n^3*m)$,20 分,结果我嫌这个暴力难看就想到了前缀和(?

然后复杂度就降为 $O(n^2*m)$,期望得分变成 40。

T3 点开,枚举了前几种情况,然后在 OEIS 里面找到了一串数列,但是感觉不对,就没有写上去。

然后我就写了一个东西:

printf("%d
", 1ll * rand() * rand() % 998244353);

虽然好像基本用不到

17:00,比赛结束,我 0 + 50 + ?= 50 + ?,RK 61

T3 我没有交,反正也应该没有分。。。

关键是 T1 怎么炸了

ditoly 讲评,原来是每一个数据都很毒瘤,然后 k=0k>n 的情况我都没有讨论。

然后 T2 可以通过排除不必要的情况暴力到 90分,最后十分要前缀和套入线段树。

接下来 T3,没想到 OEIS 的序列是对的 ?!

感觉今天又丢了很多不该丢的分。

感觉今天考的更偏向数学

Day 3

今天是一位来自长乐一中的神犇讲搜索的优化。

有剪枝、双向搜索、迭代加深、A* 等。

按照惯例,今天下午肯定不测试搜索。

果然,T1 看着是数学,先打了 50 分的子任务。

然后 T2 又可以用前缀和暴力。

T3 因为感觉时间不够就先不写了

因为今天 OJ 不评测,改成其它地方了,所以成绩 21:30 才出来。

然而我才 0+30+0=0,RK 41

大家都在议论,听说是 T1 没有子问题,数据出锅了,没有造出那 50% 的数据。。。

所以本来能 80 分的。

所以今天考的是数据结构。

小结

既然昨天考数学,今天考数结,那明天一定考搜索。

好好复习搜索吧。

Day 4

FallDream 大佬讲课,三种 DP。

下午开题:

T1,然后看了一下二十分钟写了个暴力就跑了。

T2,貌似有点不可做,整道题只有 3 个 Subtack,也跳了过去;

T3,这不是暴力就能拿个 50 分吗?

然后写了一两个小时,检查了特殊结果以及样例过了,就交了上去。

最后我憋出来了一个 20 分的 T2 暴力。

结果成绩出来只有 50+20+0=70,我的 T3 RE 掉了。。。

只有 RK 90。

Day 5

今天是 FZYZ 的 SteAunk 神犇讲图论的一些东西。

貌似 2-SAT 等算法能听得懂了

然后我旁边有一个人调分块做超级线段树模板,调了一个半小时。。。

下午网断了,然后也不能划水了

开题:

T1:这是图论题吗?一个哈希就过了!

然后我由于太懒就写了一个 std::map

20 分钟写完。

T2: 30 分的数据不是 01 背包吗?

然后我就乱写了一通,然后还多写了几个特殊的测试点。

两题暴力写完才过了 45 分钟。

T3:又可以暴力!

然后我又搞了大约半小时就写完第三题的暴力了。

又花了半小时写特殊子任务。

整个写距离比赛结束还有 75 分钟。

然后我就多写了很多可以得来的分。

感觉这三题和图论没有什么关系

事实证明,确实没有什么关系

预计得分:100 + 30 + 40 = 170

实际得分:100 + 50 + 24 = 174,RK 39.

我 T2 怎么骗来了那么多分。。。

T3 的 N=2 的时候写挂了。

Day 6

今天是一位去福州大学的老师讲网络流。

还没有下课时间,后面我真的想睡觉。

下午上机,就打了一个暴力

然后成绩出来我的暴力都被卡了。。。

但是大家的分数是真的低,30 分都能排在 RK 22 了。

Day 7

今天是来自南京大学的大佬讲计算几何。

感觉比网络流好多了。

然后听老师说,今天只有一道题是计算几何的。。。

下午机试。

T1:应该就是计算几何了,先放一边

T2:一开始想到了 20 分,但是看到时间限制 5000ms 就知道不简单。

于是我就想到了一个 $O(n^2)$,常数为 1/2 的做法。

数据范围:$N ≤ 40000$;老师还通知今天有 O2 优化!

于是我就抱着能卡过去的想法写了八十分的代码。

T3:Subtack 1:这不是模拟吗?写了,30 points , get.

然后通过各种打表等方式都不知道怎么优化。

所以就放弃了,开始向 T1 进攻。

T1:数据范围那么小,小到连状压的范围都比不过,看了是个搜索。

于是我就写了一个 DFS,加计算几何的方式判断,花了三四十分钟。

但是答案是错的。

然后我就打印了遍历顺序,发现了一个容易忽略的东西:

若两条线段的其中一个顶点重合,也算是相交。

所以我就特判了一下,提前写了特殊的情况。

在离比赛结束还有 30 分钟的时间时,我 T1 调完了,耗时 90 分钟。

晚上出成绩,我 100+80+30=210,RK 5.

应该是考得最好的一次了。

Day 8

今天讲 NOIP 历年真题。

结果我能口胡解法的不超过三分之一……

下午考的是什么鬼,出题人难道有追番???

然后 T1 只会打一个 DFS,T2 打一个遍历,T3看都看不懂。

比赛快结束了发现 T1 不是暴力的部分要写高精度。。。

T1 讲评摘自老师原话:

如果不高精度,就全是暴力分了,而且高精度用 5 分钟调一下就行了

分数:30 + 0 + 0 = 30,RK ??

然后滚回去准备结业考试了。。。

Day 9

我是第二个到机房的。

然后监考老师在我刚打开网页的时候把网络关了。。。

八点准时开题:

T1,一看就是最小生成树,先花快半小时 $ ext{Kruskal}$ 暴力跑一遍,“60” 分到手。

T2,DFS 20 分?花了 20 分钟敲。

T3:

基础暴力是 25 分,$O(n^3*T)$

然后想了 10 分钟,写了一个差分 + 前缀和,打了 $O(n^2*T)$ 的 40 分暴力。

时间:10:20

回头看 T1,发现有些不对劲:

$ ext{Kruskal}$ 最慢是 m log m,这题 60 分 m 是 $2.5*10^7$,时间限制是 1s。。。

然后赶快改成了 $ ext{Prim}$。

已经十一点多了

然后脑子抽了,T1 竟然想不到正解

然后就在颓废了。

下午分数出来,我 60+10+35 = 105,RK 50,鬼知道我后面两题怎么都少了一个点……

有一个初一大佬 RK 8.

赛后我自己竟然想出了 T1 满分做法,只要缩边,这个图只会有 2*n 条边,n ≤ 10^5,$ ext{Kruskal}$ 足够跑过去了。

$$color{green}{ ext{成为了蒟蒻,接下来要继续努力。}}$$

原文地址:https://www.cnblogs.com/zengpeichen/p/11172113.html