赛后总结
「DP进阶——模拟」赛后总结与反思
总体表现分析
本次比赛最终得分86分,排名第11。从排行榜可以看出,与其他高水平选手(如榜首213分)相比,仍有较大差距。四道题目中,T1拿到49分,T3拿到37分,而T2(街机厅)和T4未能得分。这反映出在数位DP、组合数学/图论、期望概率以及质因数分解与操作优化等多个知识板块上,存在知识漏洞和代码实现精度不足的问题。
分题目复盘与反思
T1:[ROIR 2016] 有趣数字 (Day 2)
• 得分: 49 / 100
• 题目类型: 数位DP
• 赛时思路:
使用数位DP的经典方法,dp[i][j]表示以数字i开头、长度为j的非递减数字的个数。通过计算[1, R]和[1, L-1]的答案相减得到最终结果。
• 失分原因:
1. 取模处理不当: 在计算solve(R) - solve(L)后,结果可能为负数,但赛时代码直接相减后没有加MOD再取模,导致答案错误。
2. 数据类型不一致: 使用了#define long long int,实际写法应反过来(赛时脑子抽了写出来的)导致函数参数和循环变量中大量使用了int,在处理10^100量级的大数时存在风险。
• 修正方案:
1. 在相减后加上MOD再取模:res = (solve(R) - solve(L) + MOD) % MOD;。
2. 将所有相关变量(如循环计数器、DP数组下标)统一改为long long类型,确保无溢出风险。
• 反思:
数位DP的框架是正确的,但在细节处理和代码严谨性上吃了大亏。以后对于任何涉及取模的减法操作,必须养成 (a - b + MOD) % MOD 的习惯。
T2:「dWoi R2」Arcade hall / 街机厅
• 得分: 0 / 100
• 题目类型: 图论(树形结构)、动态规划、计数
• 赛时思路:
想拿抢两个特殊点5+5=10pt,但是错误地试图用极简单的分情况讨论(如power(R, n, MOD))来通过,完全误解了题意。
• 失分原因:
1. 题意理解错误: 没有理解到这是一道在树结构上进行连通块处理和树形DP的复杂题目。
2. 知识储备不足: 对树形DP处理复杂约束条件的模型不熟悉。
3. 策略失误: 在遇到无法瞬间理解的题目时,选择了“猜结论”而非深入思考。
• 正解思路:
正解通过两次DFS进行树形DP。
◦ 第一问(计数): 第一次DFS遍历树,根据边的类型t,计算每个节点的父亲对其的约束带来的方案数变化,利用乘法原理累计总方案数。
◦ 第二问(最小和): 第二次DFS进行树形DP,f[u][j]表示以u为根的子树,且u点权值为j时的最小权和。需要根据子节点边的类型t(0, 1, 2)来分别进行状态转移,并利用前缀/后缀最小值优化。
• 反思:
这是本次比赛暴露出的最大问题。遇到新题型时,耐心读题并构建模型的能力至关重要。不能因为题目长就放弃思考。我认为,在碰到难以理解的题目时,不妨先跟根据自己的理解获得部分分(爆搜,模拟,打表……),等有思路或能做的题都做完再来思考。需要加强树形DP和计数类问题的专题训练。
T3:「C.E.L.U-02」学术精神
• 得分: 37 / 100
• 题目类型: 概率期望、图论(连通块)
• 赛时思路:
第一问经过样例的找规律加推算得出第一问期望次数为 n * n / (n-1)(答对了),第二问在n!=7时直接输出1,完全是碰运气的做法(虽然第一个点确实骗到了7分)。
• 失分原因:
没有想到第二问的正解。
• 正解思路(基于题目提示):
◦ 第一问(总次数期望E0): 每个点每次连边有(n-1)/n的概率成功。因此每个点连边次数的期望是n/(n-1)。总期望 E0 = n * (n / (n-1))。
◦ 第二问(连通块期望E1): 一张n个点的图,每个点随机连一条边(不允许自环),其连通块个数的期望。这需要用到概率论和组合数学的知识进行推导,与环的期望个数等有关。
• 反思:
概率期望是弱点中的弱点。需要多加练习概率期望专题,并多做相关题目。
T4:「SWTR-3」Game
• 得分: 0 / 100
• 题目类型: 数论、质因数分解、贪心
• 赛时状态: 0分。
• 赛后分析:
虽然得了0分,但在尝试暴力思路但未完成,用到了筛法求素数。此题需要将每个数分解质因数,所有数的最大公约数是关键。操作的本质是有选择地消除质因数。最终所有数需要变成它们的最大公约数g的某个约数形式。最优策略是找到所有数在质因数分解上的“最大公共操作序列”。
• 反思:
在做暴力的时候坚持并做记录,由于代码过长思路过杂很有可能前面写完后面就忘了前面代码的用处,不能写一半由于觉得太复杂或觉得有更快的做法而摇摆不定。
对于状压DP的了解不够透彻,只能在一般的情况下想出来,考试时完全没想到这是状压
未来学习与训练计划
- 夯实基础,注重细节: 加强数位DP、树形DP等经典模型的代码实现训练,特别注重边界条件和模运算的细节。
- 专题突破: 针对本次暴露的弱点,进行概率期望和图论计数的专题训练。
- 读题与建模能力: 多练习复杂题面的题目,锻炼从冗长描述中提取关键信息并构建数学模型的能力。
- 比赛策略: 制定合理的做题顺序和时间分配策略。对于T4这类题目,即使没有完美思路,也要编写暴力程序或特判争取部分分。
- 反思与总结: 坚持每场比赛后都进行这样的详细总结,分析错误原因,并订正到正解代码,真正做到“赛一场,进一步”。
总结: 这次比赛是一次宝贵的试金石,清晰地指出了当前的优势(如数位DP有基本框架)和不足(图论、期望、代码严谨性)。失利并不可怕,重要的是从中学到东西。保持热情,持续努力,未来一定可期!加油!

浙公网安备 33010602011771号