Loading

3.16 CW 模拟赛 T2. 优秀的赛制 & 一些杂谈

前言 & 杂谈

深度思考\((\)用时一节课\()\)

一下子接收的东西有点多, 在这里顺带理一下吧
很多时候把这些东西公开出来是没有意义的, 但是我没必要掩藏什么

首先是这个键盘超级软, 嗯嗯嗯, 感觉挺神奇的, 想起来平时走的时候盖一层东西, 平时落灰太多了

不扯远了, 这周回去发现近段时间补的考试题基本上没有太好的理解, 后面两天可能需要抽出时间去补
为什么会这样主要是没有落到实处, 太浮躁了, 代码是不打的, 虽然说客观确实比之前难一些, 但是需要进步和修改了

代码一定要打, 不然你对这个题的理解永远是浮于表面的
但是本质上其实是速度效率问题, 连表面搞懂一个题用的时间也太多了, 加上每天状态不好静不下心来, 往往完全没法搞懂一些东西
这些无论是文化课还是什么总要经历的, 一定要克服, 不然进入恶性循环之后并不是那么好救得

考试的时候往往还好, 你只要稍微按照策略, 去做就行了, 往往心态上的影响没有平时那么大, 当然也不是说没有影响, 但是这个可以先放一下, 平时心态好了, 考试能力上去心态自然会好, 你不能要求边角料心态很好, 我又不是安东尼

平时呢? 往往更加受影响
回顾之前没有完全搞懂的场景, 往往是学一两分钟就陷入长久的死磕, 没有动手, 仅仅只是停在那里想一定是不行的, 我很早就总结出来做事落到实处, 不浮躁的重要性, 但是实际应用上欠缺了很多
因此我们需要做到动起手来去写, 去试, 去研究, 错了又如何, 我们还可以去问

现在感觉之前总结的大多数东西实际上拖累了我的发展, 现在看来也不太正确和一般, 唯一正确的可能是总结和反思的心态, 无妨, 人总是要进步的, 因此是时候列出最新需要注意的东西了
好的一点是我的问题基本不复发, 现在的问题往往都是以前一路带过来的, 谢
毕竟以前还在死磕畏难, 现在一个跟着策略走就解决了
没做到的可能是平时不畏难, 不在死磕的情况下快速弄明白一个题

有些人确实很烦, 你不要去管, 而且目前你遇到的那些让你不舒服的人好像都是你自己搞出来的吧, 明明别人好像也没干什么就在那搞七搞八的把关系搞差, 怎么回事嘛
好像说这样了又拉不下面子去改善, 关系一直是僵的反而更影响心情, 本意可能是想让不适合的人离自己远一点, 然后别人凭什么就要吃这个亏去躲你, 你又不是什么部长之子, 有没有这个能力, 别人要是这么恶心我我指不定 \(\rm{a}\) 他身上怎么可能躲, 这个东西肯定也是要改善的
之前纯属想放下这些马上又发生一些事又想不反击一下怎么办, 恶性循环了, 我又不是真的坏到故意去搞别人, 可以说我有很多坏习惯供人讨厌但是真的不要这样, 本质不能是坏的, 有的时候就是默契一点就结束了的事情, 但是不是所有人都应该惯着你这批毛病, 凭什么你看不惯的人就要离你远一点, 更何况看不惯的又不是什么本质上的问题
纯纯就是不想接触太近, 因为各种各样性格不同嘛, 但是没必要搞成这样
做个同学有什么嘛, 不是所有接触的人都是朋友这不是基本的社会关系吗, 太小气
别人已经尽可能的迁就我了, 各自退一步不好吗?
恶心别人从而让别人离我远点本身就不是一个好方法, 当然也不是说一定要一味忍让也不对的
这个就看把握一个度

扯远了, 很早之前就列出时间的单栏就可以看出这个问题是老大难了, 想办法处理一下

然后就是常说的知识体系的构建和具体问题的解决, 在竞赛中往往是相辅相成的, 而非像文化课那样是专门有分开的

然后就是现在再搞的那个所谓公式化做题真的有益还是有害有待思考, 毕竟这种东西往往对思维定式是促进作用, 不太好, 而且严重加深了我学一半就跑这个坏习惯的养成
好像只要改掉在需要认真补的题上做一半这个问题, 这个形式还是可以保留的, 可以帮我初步找到更好的性质

稍微总结一下, 问题的大头在知识体系和具体问题的解决上, 而考试中的问题其实还好, 并不是很严重
我们需要解决动不动死机的问题, 要通过具体的行动来解决知识体系上的问题和具体问题, 然后就是在非常困扰的时候一定不要说就躺平了, 去颓去水最后会变成什么样有太多的例子了, 而且你成绩不好, 加上我并不算一个很优秀的人, 还有一车可以讨厌我的地方, 那不完蛋了, 也不是说没人同行就一定不好, 但是这样必然影响心态导致像很多人那样完全完蛋, 能够重来的毕竟是少数

然后下课一定只是放松而不能去看视频, 这个危害并非小, 某吴姓同学这一点上做的就很好啊, 游走一下还能锻炼身体, 不济就每日 \(\rm{C/D}\)
停下来的时候往往是热情被耗光了, 可以简单去换下脑子然后接着搞, 一定要有韧性
停下来得时候, 往往简单的部分已经被理完了, 剩下的需要去磕, 这就是我差的地方在, 要想进一步一定是要跨过这一步的
最后需要思考的就是遇到这种情况应该怎么办
应该是需要抓紧时间, 做事落到实处, 不浮躁
动起手来去写, 去试, 去研究, 错了又如何, 我们还可以去问
差不多就是可以总结为不要怕错, 一定要去搞, 这样至少比现在强, 可能辅佐上一些规划还能更好, 因为现在能搞懂的, 通过规划可以先搞懂

我现在非常无语的主要原因应该还是这个东西脱离我之前总结的东西太远了, 属于反思方法反思到新建文件夹了
但是没有办法, 宁肯做错, 也不能什么都不做, 以前关于时间的专栏简直是依托, 除了策略和时间分配简直就是完全没用, 不便于实施
因此当前可能就是在时间分配的基础上去做上面提到的那些事情

构想一下, 如果我能够做到以上内容, 那么不仅能够维持当前水平, 经过一些思考之后自信可以上升, 对题目理解能力会更好, 同学也不会因为我问睿智问题而觉得我是弱智, 当然 \(\rm{AI}\) 必须大范围代替同学

输出内容

人际关系

不要乱搞, 回归正常

问问题

\(\rm{AI}\) 理逻辑, 同学补漏洞

死机情况

  • 首先需要分配, 尽可能完成基础的内容, 只有剩下全是死机内容的时候再去搞, 保证效率上的不劣
  • 其次抓紧时间, 做事落到实处, 不浮躁, 动起手来去写, 去试, 去研究, 错了又如何, 我们还可以去问
  • 一定要打代码

平时学习

需要在 \(\rm{github}\) 上同步学习路径之类的, 利用好其特性
基础上代理可能需要买了, 这周先实验

  • \(\rm{github}\) 维护过程
    也就是每个自由天的开始就规划要干什么及策略, 然后用 \(\rm{Github}\)\(\rm{issues}\) 拆分处理, 时刻添加 \(\rm{comments}\) 记录尝试研究的内容, 并反思小段, 做好复盘工作及调整策略和事件\((\)当然这是在干完一件事之后\()\)
  • \(\rm{cnblogs}\) 仍然维护个人知识库及总结反思, 也就是维护结果

思路

这个题赛时稍有思路, 因此补题基本上建立在赛时记录上去尝试和研究
在策略基础上有资料去研究

首先不难发现根据题目限制, 任意一条祖先-后代链上的选点顺序是限制了的, 也就是说倘若我们确定了一棵子树中的选点情况, 那么相对应的各概率就确定的, 是与选点顺序无关的, 因此我们可以简化成选点的问题, 这是一个观察

其次你发现根据题目, 一个祖先-后代链上只要有一个通过, 剩下的一定全部通过, 这也是一个性质
题目就分析完了, 下面是转化完的内容

题意

给定一棵树, 对于一种选点方案, 其中任意点通过的先验概率都是 50%50\% , 如果一条极长祖先-后代链中有一个通过, 那么其所有祖先通过的后验概率为 100%100 \%

求选点序列使得根节点通过的概率之和, 一种选点方案的任意分叉点都可以任意排列成为一种序列

转化成选点的问题之后是要动态维护序列的方案数的, 需要一些组合知识, 这个是实现上的问题, 我们先放到后面去

不难想到肯定要用树上 \(\rm{dp}\) 维护, 状态一定有一维维护当前选点个数
因此令 \(f_{u, k}\) 表示当前在点 \(u\) , 已经选择了 \(k\) 个点, 当前这个点 \(\rm{AC}\) 的概率

因为要维护第二维, 只能使用合并法

错误方法 \(1\)

我们考虑具体应该如何合并
需要知道当前点子树中是否有 \(\rm{AC}\) 点来决定当前点使用先验概率还是后验概率
不难发现对于点 \(u\) , 设所有 \(v \in \textrm{son} (u)\)\(\rm{AC}\) 概率组成的概率集合 \(p_1, p_2, p_3, \cdots, p_k\), 那么当前点 \(\rm{AC}\) 的概率就是其中至少有一个 \(\rm{AC}\) 的概率 \(1 - \prod_{i = 1}^{k} (1 - p_i)\) 乘以 \(1\) 加上其中一个 \(\rm{AC}\) 也没有的概率 \(\prod_{i = 1}^{k} (1 - p_i)\) 乘以 \(50\%\) , 这是一个经典的全概率公式, 但是应当如何动态维护呢

考虑修改一下定义, 在合并时暂令 \(f_{u, k}\) 这一个状态表示表示当前在点 \(u\) , 已经选择了 \(k\) 个点, 全部合并非 \(\rm{AC}\) 点的概率, 在最后统一处理

那么初始化 \(f_{u, 0} = 1\)
每次合并

\[f_{u, i + j} \gets f_{u, i} \times (1 - f_{v, j}) \]

上下界需要卡的比较死才能做到 \(\mathcal{O} (n^2)\)

错误方法 \(2\)

但是你发现这个式子又显然的问题, 因为维护的是 \(\rm{AC}\) 概率之和, 因此显然不应当用 \((1 - f_{v, j})\) 来维护非 \(\rm{AC}\) 概率
由此修改状态

\(f_{u, k, 0/1}\) 表示当前在点 \(u\) , 已经选择了 \(k\) 个点, 当前这个点是否 \(\rm{AC}\) 的概率之和
那么当前计算概率显然就应当换一换了
不难发现对于点 \(u\) , 设所有 \(v \in \textrm{son} (u)\)\(\rm{AC}\) 概率组成的概率集合 \(p_1, p_2, p_3, \cdots, p_k\)

  • 当前点 \(\rm{AC}\) 的概率
    其中至少有一个 \(\rm{AC}\) 的概率 \(1 - \prod_{i = 1}^{k} \overline{p}_i\) 乘以 \(1\) 加上其中一个 \(\rm{AC}\) 也没有的概率 \(\prod_{i = 1}^{k} \overline{p}_i\) 乘以 \(50\%\)
  • 当前点不 \(\rm{AC}\) 的概率
    其中至少有一个 \(\rm{AC}\) 的概率 \(1 - \prod_{i = 1}^{k} \overline{p}_i\) 乘以 \(0\) 加上其中一个 \(\rm{AC}\) 也没有的概率 \(\prod_{i = 1}^{k} \overline{p}_i\) 乘以 \(50\%\)

考虑修改一下定义, 在合并时暂令 \(f_{u, k, 0}\) 这一个状态表示表示当前在点 \(u\) , 已经选择了 \(k\) 个点, 全部合并非 \(\rm{AC}\) 点的概率, 在最后统一处理赋值
发现这样还是寄, 因为下面维护的是概率之和, 你不能直接乘到一起去处理

正确方法

问题主要分为两个

  • 如何维护第二维
    已知是合并法, 问题是和计算的结合
  • 如何处理 概率和 的计算
单个序列的计算方法
  • 当前点 AC\rm{AC} 的概率
    其中至少有一个 AC\rm{AC} 的概率 1i=1kpi1 - \prod_{i = 1}^{k} \overline{p}_i 乘以 11 加上其中一个 AC\rm{AC} 也没有的概率 i=1kpi\prod_{i = 1}^{k} \overline{p}_i 乘以 50%50\%
  • 当前点不 AC\rm{AC} 的概率
    其中至少有一个 AC\rm{AC} 的概率 1i=1kpi1 - \prod_{i = 1}^{k} \overline{p}_i 乘以 00 加上其中一个 AC\rm{AC} 也没有的概率 i=1kpi\prod_{i = 1}^{k} \overline{p}_i 乘以 50%50\%
但是如何一起考虑所有选点方案呢?

也就是说, 如何处理使得对于所有概率集合 \(p_1, p_2, p_3, \cdots, p_k\), 都可以按照对应的计算公式被计算出来
可以明确地是不可能直接利用上面的公式去处理了, 必须找到新的性质

考虑一些性质 \((\)下称子树表示 \(v \in \textrm{son}(u)\) 中的 \(v\) 子树集合\()\)

如果已知所有子树根节点至少有一个 \(\rm{AC}\) 的概率和一个 \(\rm{AC}\) 也没有的概率, 可以简单推导出当前的 \(f\) 状态

为什么这个就是可以直接处理的呢? 这是因为倘若两个值 \(p_1, p_2\) 表示各自的 \(\prod_{i = 1}^{k} \overline{p}_i\), 那么 \((1 - p_1) \times 1 - p_1 \times 50\% + (1 - p_2) \times 1 - p_2 \times 50\% = \Big[(1 - p_1) + (1 - p_2)\Big] \times 1 - \Big[p_1 + p_2\Big] \times 50\%\)
形式化的讲就是简单加法是有结合律的, 但是复杂乘法没有

观察到 所有子树根节点至少有一个 \(\rm{AC}\) 是可以维护的
因此新开一个 \(g_{u, k, 0/1}\) 表示对于 \(u\) 的所有子树根节点中是否有点 \(\rm{AC}\) 的概率

那么 \(g\) 很好转移了, 在路上一路如上去合并即可, 最后统起来算一遍, 这个不多赘述
需要注意的是因为是序列, 合并的时候形如插板法

如何转移 \(f\) , 这个可以在整体处理时操作而不用去合并, 不然没有意义了

  • 不选中 \(u\)
    那么所有 \(g\) 全部归为 \(f\) 中的 \(0\), 因为不再可能有了
  • 选中 \(u\)
    对应上面公式搞一下就好的

其实并不困难的转移, 但是因为状态不好搞得很麻烦, 但是需要明确的是这样明显是更好的, 也就是 \(\rm{Github}\) 维护过程要继续下去, 加油

本题中需要注意的其实是要想到如何把所有概率公式拢到一起去, 现在寻思可不可以直接用 \(g\) 转移, 也就是最终直接拿辅助数组来处理, 发现也不是不行, 但没有必要

思维链应当如下
发现固定选点的计算答案方式 \(\to\) 本能构建状态 \(\to\) 发现状态转移

最大的问题是对这种情况下仍然应该用乘法的不理解
为什么即使是概率之和仍然满足乘法原理, 这是需要进一步思考的

\(\rm{deepseek}\) 确实很牛啊, 给我讲懂了
也就是说, 概率本质上是 \(\{\)方案数, 总方案数\(\}\) 的一个点对, 我们确实可以按照方案的原理去做
更一般的就是概率论的一些知识, 需要注意的是任意两个单概率可以结合, 有

\[\sum_{i} p_{i} \times \sum_{j} q_{j} = \sum_{i} \sum_{j} (p_{i} \times q_{j}) \]

总结

序列类问题看是否能改造成选点类问题乘上权值

是否类概率问题的 \(\rm{dp}\) , 在允许的情况下具体维护 是否 的概率一般是更方便的

树形 \(\rm{dp}\) 维护加参数, 往往只能使用合并法
合并法就是常说的

  • 根据意义初始化
  • 合并\((\)理解为辅助数组\()\)
  • 根据意义统一处理合并完之后的状态

维护概率之和和单独维护概率还是很不一样的
概率之和往往可以通过手段来简化
很好的是终于对全概率公式有了更好的了解

概率往往可以看做是方案数, 但是带了个总方案数的分母
加法与乘法的结合本质上是穷举所有可能的独立组合

\(\rm{dp}\) 过程中不好维护的东西, 往往作为新的问题新开维护


解释为什么不, 往往比解释为什么是更难

posted @ 2025-03-16 20:30  Yorg  阅读(18)  评论(0)    收藏  举报