如何在比赛中进行暴力和骗分?
听取MLE声一片
·
2022-12-08 21:53:20
·
个人记录
声明
本文主观性较强,可能含有口嗨,请谨慎对待其正确性。
本文针对于联赛,因为省选并不在我经验范围内。
这是之前的版本,如果想看就去那看看。
前半部分(直到 NOIP2020)是在 21-22 赛季正式开始前写的,后半部分是在 22 年末以及 23 年初写的。这也算是把之前挖的坑给填好吧。全文写的比较小丑,请见谅。
为什么没有 2021 年?因为我 2021 年整一年都在自闭。
如果这对你来说有帮助,就点个赞吧。
一定要看后记。
如何在比赛中进行暴力和骗分?
\text{Part -1} 目录
- $\text{Part 2.1}$ 前置知识
- $\text{Part 2.2}$ 比赛分析
- $\text{Part 2.3}$ 实战演练
- $\text{Part 3.1}$ 前置知识
- $\text{Part 3.2}$ 比赛分析
- $\text{Part 3.3}$ 实战演练
- $\text{Part 4.1}$ 前置知识
- $\text{Part 4.2}$ 比赛分析
- $\text{Part 4.3}$ 实战演练
- $\text{Part 5.1}$ 前置知识
- $\text{Part 5.2}$ 比赛分析
- $\text{Part 5.3}$ 实战演练
\text{Part 0} 前言
CSP 即将来临,肯定有很多同学肯定在为绿勾蓝勾而奋斗,希望能在二轮比赛中获得好成绩。
然而,神仙都是经过千锤百炼而诞生的,蒟蒻是不能在短时间内弥补与神仙巨大的实力差距,而又需要与神仙来竞争。这应该怎么办呢?这就需要暴力与骗分。
骗分导论
这里说一下我对暴力和骗分的理解:
暴力:用自己已经熟练掌握的方法或者非正解对一道题拿到部分分甚至AC。
骗分:在一道题不择手段地(SSH等除外)拿到尽量多的部分分。
从这里可以看到,我所定义的暴力与骗分不仅仅包括爆搜、循环、输出无解等,更多的包括依靠自己实力来获得比最朴素的暴力多得多的分数。
暴力和骗分是一个很有用的技巧,但它也依靠这自己的能力。下面我来举一下 2020\sim2021 和 2022\sim2023 比赛季的四场比赛,普及组的比赛就不再讲解,原因是普及组的东西是最基础的,普及组不建议在一二题骗分。
也可以说,本篇文章是为想要一等的同学准备的。
\text{Part 1} 心态
首先,心态是最重要的。
同一个你,同一份考题,有没有一个好的心态,能差好几十分,甚至是数百分。
在比赛开始之前不要把结果看得太重,平常心去比赛即可。不管成功或者失利,出成绩都不要过于高兴或悲伤,这绝不是终点(除非您高二)。
\text{Part 2} CSP-S 2020
\text{Part 2.1} 前置知识
极其熟练的搜索,一定的 ds 基础(ST表,树状数组,线段树,LCA),一定的dp基础(会绿题及一下经典题目的方程推导),组合数学入门,能做一些中型模拟甚至大模拟(不限时间),基础STL,一定的图基础,一定的字符串基础(哈希),图上的 tarjan 之类。
练习可以去洛谷题单搜索,十分方便。
\text{Part 2.2} 比赛分析
提高组的比赛,难度不算太高,能拿到很多部分分的。
有一说一,2020 年的提高组比赛题目不算太难,但是第一题搞人心态。做题顺序能很大程度上决定分数。
\text{Part 2.3} 实战演练
题库中前四道
拿到试卷,我们看到了第一题:
儒略日
数据范围:
测试点编号
Q =
r_i \le
1
1000
365
2
1000
10^4
3
1000
10^5
4
10000
3\times 10^5
5
10000
2.5\times 10^6
6
10^5
2.5\times 10^6
7
10^5
5\times 10^6
8
10^5
10^7
9
10^5
10^9
10
10^5
年份答案不超过 10^9
显然这是道大分类讨论题,这就引出了我们第一个原则:
大分类讨论和大模拟尽量往后放
很多人折在第一题上,导致分数线很低。
先看一下数据范围,发现前四个点都是公元前的,非常好写,橙题难度,直接写个暴力枚举月份即可,大约 20 分钟即可完成。
期望得分: \mathbf{40+0+0+0=40}
然后我们来看第二题:
动物园
这题就很水了,只需要仔细找一下性质即可
有一个条件是“所有的 q_i 互不相同”,这意味着饲料是啥都不重要了,c 和 q_i 甚至不用读进来,这就避免了 MLE。
最多需要 25 分钟就可以把这道题的AC代码写完,特判 k=64,n=0 的情况即可。
此时仅仅过去了一节课的时间,我们就期望得到了:\mathbf{40+100+0+0=140}。
之后我们开第三题:
函数调用
显然,我们可以很容易的写出不包含三号函数,裸的线段树2,写完大概需要 25min(不熟练线段树的话)。
接着来看特殊限制:
不含第 2 类函数或不含第 1 类函数
不含第1类函数极其简单,因为是全部的操作。
然后显然纯暴力是可以把 1\sim 4 数据点跑过去的
这样我们又期望得到了 \mathbf{40} 分,目前期望 \mathbf{40+100+40+0=180} 分。
T3的正解其实也不算太难,现在可以先写一下T4的暴力,回头再写T3。
第四题:
贪吃蛇
从题面很容易就可以得知这一个性质(每条蛇的策略),设还剩下 m 条蛇,长度递减。
下面比较默认加上编号比较。
如果 a_0 吃了 a_m ,而且吃完之后还不是最小的,即 a_0-a_m>a_{m-1} ,a_0 肯定会吃。
如果 a_0-a_m 根据第一条性质就可以很容易得想出基本代码,但是会栽在大样例上,而且每个都会多 1。 从这里就可以帮助我们想第二条性质,就是性质二可以再帮助我们吃掉一条蛇! 如果说想到这第一条性质,可以获得 \mathbf{20} 分。 如果想到第二条性质,我们最少可以获得 \mathbf{40} 分。 第二条性质该怎么办呢?用奇偶性搞。 我们把 a_2 定为第一条蛇,以此类推。 显然,如果第奇数条蛇的决定是吃,a_0 选择不吃。 如果第偶数条蛇的决定是吃,a_0 选择吃。 这个东西就可以用一个 set 来维护,分成两个阶段。 第一阶段:最长的疯狂吃,直到最长的吃掉之后比最短的短。 第二阶段:判断奇偶性看看能不能再吃一条。 然后就可以用 set 来维护,时间复杂度为 Tn\log(n) ,可以拿到 \mathbf{70} 分! (满分算法其实优化起来不算太难,不过这好像已经是正解了就不放了,感兴趣的可以看题解) 期望得分:\mathbf{40+100+40+[20,70]=[200,250]} 分 然后就可以去看前面的T3和T1了,您可以尝试去写T3的正解(拓扑一下即可)以及干T1的分类讨论。 T1的分类讨论发现非常复杂,我们发现可以用二分方法去做,比直接弄要简单不少。 如果时间足够是可以写出正解的。 期望得分:\mathbf{[40,100]+100+40+[20,70]=[200,310]} 分 可以看到,最低档的暴力分是在 \mathbf{200} 分,而最高档的已经达到了 \mathbf{310} 分。 而蓝勾分数线仅仅为 \mathbf{140} 分,有很多的挂分空间。 小总结 大胆猜想,小心求证。其实前面那一句话是很重要的,比如贪吃蛇的第二条性质,只要总结出来分数就可以至少提高 \mathbf{50} 分。 \text{Part 3} NOIP 2020 \text{Part 3.1} 前置知识 基本和前面的一样,而又往后了一个月,可以往前学习一点。 大概可以向前学树剖网络流之类的。 关于字符串:MLE太菜了不会字符串,只会哈希和暴力,就不写了。 \text{Part 3.2} 比赛分析 这场比赛总体来说难度也不算太高,就是T1卡了先乘后除。 \text{Part 3.3} 实战演练 题库中后四道 我们拿到了第一题排水系统。 显然这是一道拓扑排序的裸题,直接扔一个板子。我假设您看到了数据范围,并且有非常好的习惯这道题用了先除后乘,时间大概过去半个小时。 因为数据范围算出来一个点很有可能爆ll。 期望得分 \mathbf{90+0+0+0=90} 分。 我们来看第二道题字符串匹配。 这道题显然有个极其暴力的做法,直接照着题面,从头开始找循环长度,直接模拟即可,但是一定要注意细节。 参考代码,考场写的,很臭,请见谅。 对于特殊性质一和二,因为只含有一到两种字符,就可以用字符串哈希来搞一下,这样就得到了不少的分数。 期望得分 \mathbf{90+[48,84]+0+0=[138,174]} 分。 第三题是一道构造题,先放一放。 第四题微信步数。 显然 -1 的情况很容易判断出来,就是一轮循环仍然在原地。 然后前三十分的暴力非常好拿,写一个dfs就行。 暴力代码 因为后面估计还有一个点是 -1,所以我们期望得分是: 检查其他题没有问题,我们就来看第三题[移球游戏](https://www.luogu.com.cn/problem/P7115)。 这是NOIP第一次出SPJ题,非常考验思维。 先来看 `n=2` 的情况,可以用暴力解决,具体可以看题解(因为MLE太菜了真不好描述)。 这道题就看您思维水平了,但是10分应该是能拿到的。 期望得分 $\mathbf{90+[48,84]+10+35=[183,219]}$ 分。 ### 小总结 NOIP2020确实比CSP-S2020要难一些,但还是可以通过自身强大的功底来获得比上述期望高的多的分数。 参考:山东高中生NOIP2020一等分数线大概是140分,不算高。 ## $\text{Part 4}$ CSP-S 2022 ### $\text{Part 4.1}$ 前置知识 基本同上。 ### $\text{Part 4.2}$ 比赛分析 算是近几年最简单的提高比赛了,非常容易得很高的分。 骗分也是没有啥表现,直接写正解就差不多了。 ### $\text{Part 4.3}$ 实战演练 [题目链接](https://www.luogu.com.cn/problem/list?tag=342%7C59&page=1) 看到第一题,因为中间只有四个点,自然想到枚举中间两个点。 然后就转化成求每个点经过一个点再到达起点的分数。 算上重复也最多取三个,枚举每两个点前三个判断是否合法即可。 期望得分 $\mathbf{100+0+0+0=100}$ 分。 接着看第二题,一眼申必 st 表,直接敲上,注意些细节就差不多过了。 期望得分 $\mathbf{100+100+0+0=200}$ 分。 最多两个小时就能写完前两道题。 第三题题面看起来很麻烦,仔细读完题发现可以反攻当且仅当出度均为 1。 首先把 $n^2$ 的写了,然后考虑用 set 维护把没有操作 4 的做出来,就有 $60$ 分了。 期望得分 $\mathbf{100+100+60+0=260}$ 分。 第四题随便写写暴力,最少把 $16$ 分 $k=1$ 暴力写了。 期望得分 $\mathbf{100+100+60+16=276}$ 分。 因为没打,而且太简单了,描述就很简略。 ## $\text{Part 5}$ NOIP 2022 ### $\text{Part 5.1}$ 前置知识 基本同上。 ### $\text{Part 5.2}$ 比赛分析 分数严格依赖于开题顺序的比赛。 个人认为如果 swap T2T3 队线会提高 30-50。 为了留有一些真实性,我们按照考场上做题进行分析。 ### $\text{Part 5.3}$ 实战演练 [题目链接](https://www.luogu.com.cn/problem/list?page=1&tag=83%7C59) 第一题是[种花](https://www.luogu.com.cn/problem/P8865),是一个小清新签到题。随便跑几次前缀和就能过了。 注意多测要清空。 时间大概要二十分钟要一个小时吧。 期望得分 $\mathbf{100+0+0+0=100}$ 分。 然后看到了[喵了个喵](https://www.luogu.com.cn/problem/P8866)。 看到题之后发现 $k=2n-2$ 非常简单。可以一个栈固定塞两种,最后空出来一个栈,然后用这个空出来的栈对每次塞进来的卡牌和前面的卡牌进行消除。策略就是能消就消。注意要输出步数。 期望得分 $\mathbf{100+15+0+0=115}$ 分。 此时时间过了不到一个小时。 因为你的经验告诉你,如果联赛第二题都拿不了高分会很丢人,然后你开始硬冲喵了个喵。 时间又过去了快两个小时,发现 T2 非常神秘,还是没想出 T2,我们假定你把爆搜写了并写对了。 期望得分 $\mathbf{100+35+0+0=135}$ 分。 时间还剩将近两个小时,显然是不能继续冲 T2 了。 开始看 T3 [建造军营](https://www.luogu.com.cn/problem/P8867)。 看了一会题面不难想到,这是一个缩点+树上 dp。 但是不能保证一个多小时内能把这两个写完并写对。 再来看 T4 [比赛](https://www.luogu.com.cn/problem/P8868)。 这题是一道数据结构题,而且看起来比较经典。但是这个时候显然是不能想正解了。 $n^2$ 的前缀和很容易写,这样是有 $20$ 分的。 单调栈是有 $52$ 分的,但是这没时间了。 期望得分 $\mathbf{100+35+0+20=155}$ 分。 最后来看 T3。 看到状压竟然有足足 $35$ 分,所以决定去打这档部分分。 $2^n$ 枚举哪些点选作军营,然后再统计有多少条边是必须要保护的,这个单次可以用 $m^2$ 做到,假定结果是 $x$。所以这个状态对答案的贡献就是 $2^{m-x}$。 期望得分 $\mathbf{100+35+35+20=190}$ 分。 大概可以在结束前十多分钟前完成吧。 看到后面还有 $10$ 分链的部分分。假设军营最左端是 $l$,最右端是 $r$,显然 $l$ 和 $r$ 内部可以随便插入军营,而且 $l$ 到 $r$ 之间的道路必须要守。可以通过枚举区间长度进行统计。 期望得分 $\mathbf{100+35+45+20=200}$ 分。 ### 小总结 如果开题顺序改为 $1-3-4-2$,分数大概可以比刚才的 $200$ 分提高至少 $30$ 分吧,上面是按照真实考场上大多数人的开题顺序写的。 其实 csp-s 已经暗地里挑出第一题比第二题难,但是因为 csp 第一题比较水所以没啥人注意到这一点。 最大的教训是开题顺序不能严格依赖于题目安排顺序,一定要在比赛开始时读完每一道题再做。 ## $\text{Part 5}$ 做题策略总结 我写的这四场比赛,大多数的得分都和开题顺序有关。 所以,一定要在开始时,看完全部的四道题,自己心里评判一下难度,再从对于自己来说好做的开始做。 或者说更暴力一点,遇到非传统题默认手动排到第三题。 正解不会就别想正解了,因为会有 $114514$ 分的部分分也可以拿。 ## $\text{Part 6}$ 后记 这大概是我前年为了总结一下如何暴力骗分而开始写的东西吧。 文章的前半部分是 21-22 赛季开始前写的,现在看来比较小丑,有时间就改改。虽然说我现在也很小丑就是了。 写写停停那么长时间的东西也改完结了吧。 其实暴力和骗分,最终指的还是部分分。 对于每个人来说,暴力的标准显然是不同的,所以就能拿到不同档的部分分。 这个能打的部分分的高低,归根结底来说还是自己的能力。 这可能也比较小丑,为了突破自己的能力拿到更高分而学习暴力和骗分,然而最后暴力和骗分还是要归于自身能力的。 对于一个人来说,部分分是非常多的,但是这又引出来 OI 正赛的一个关键词——挂分。 有骗分技巧能提高分数上限,而挂分则决定你到底能获得多少分。 最终的得分,大概是归结于自身的能力和考场技巧的。 但是,显然一个人的能力是不能简单量化的,还得看相性。 每个人都有相对突出的点,也有相对差劲的点。如果考到自己擅长的点,分数可能会提高,反之分数可能会降低。 总之,这就是 OI,永远存在不稳定因素,就像一场豪赌的,但是我们仍然坚持的,信息学竞赛。 补:之后可能会改改一下前面的内容,看看有没有时间吧。
十款值得买的高尔夫服装产品榜 精选高尔夫球服装商品推荐
意甲豪门米兰亚洲球员崛起:揭秘五大潜力新星