CCPC 网络赛
array
做法
比赛中的表现..... 已经无法言语形容了。
- 题意是,查询前缀中大于某个数字的 mex,在线。
- 一下把问题转化为偏序问题.... 带修主席树?????这下好,直接一箭穿心,武将被移除。
- 问题出在于总想对 a 序列的每个前缀维护 xxx 信息。
- 注意到答案不会超过 \(n+1\)
- 权值线段树,维护每个值出现的位置。
- 查询值大于等于 k 的,出现位置大于 r 的,最小值。
- 二分答案,query max。这样的 double log 可以做。
- 但在线段树上二分有点憨憨,把 [k,n] 区间在线段树上解体成 log 段。
- 从左到右考虑每段,如果最大值大于 r 那么答案就在这段中,钻进线段的子树里,每次看看往左儿子走还是右儿子走。否则考虑下一段。
Fishing Master
做法
- 一上来,我的回合开始,先摸一条鱼。
- 理想状况是可以一直炖鱼,炖 \(x\) 的时间,可以抓 \([\frac{x}{k}]\) 条鱼,这样可以得到答案的一个下界。
- 为了防止无🐟可炖,那么让炖的时间久的先施展
- 可能某时刻🐟依然会不够炖。选择一些炖鱼的时间,抓 \(\lceil \frac{x}{k} \rceil\) 条鱼,贪心选取 \(x-k[\frac{x}{k}]\) 极大的🐟,称着炖它的时候多摸一条,这样又可以得到答案的一个更大的下界。
- 此下界可以取到,不会证明正确性。对这些被贪心选择的🐟,让他们先施展,能保证下界取到【典型的口胡】
huntian oy
做法
- \(gcd(i^a-j^a,i^b-j^b)\) 当 \((i,j)=1,(a,b)=1\) 时,辗转相除可得等于 \(i-j\)
- 杜教筛裸题。
- 但比赛中没有通过。
- 为什么没有通过呢?因为 TLE,MLE 双份快乐。
- 为什么TLE,MLE呢?
Kaguya
题意 二分图,左集 n(n<=30) 个点,右集 m(m<=30) 个点,两点之间 0.5 概率连边,求任意两点之间最短路期望。
做法
- DP 即可【卜】
- 根据对称性,点的地位相等。所以状压折半之流,不予考虑,问题转化为左集1号点到右集1号点距离期望。
- 众所周知,期望相加很简单,取极值很难,考虑<=x的概率是个办法但无从入手。
- 想想左集 1 号点到其它点最短距离怎么求?可以获得很多启发。
- 做 BFS 生成树,深度即距离。
- BFS 中,已入队的元素,不会再次入队。
- 考虑 DP,\(dp[i][x][y][z]\) 表示,从左集 \(1\) 号点开始的 BFS 生成树,施展 \(i\) 层,左集中有 \(x\) 个元素入队,右集中有 \(y\) 个元素入队,最后一层有 \(z\) 个点的方案数。转移枚举第 \(i+1\) 层点数即可,可以很自然地想到一些预处理优化。在 DP 决策的同时,便实现了对边的决策!
- 答案怎么算呢?这个地方卡住了。当时提出这个状态只觉得它强无敌但完全不知道该怎么计算答案场面就是这样的绝望。
- sdcgvhgj 的回合开始,总方案有 \(2^{nm}\) 种,满足以左1为根的 BFS 生成树施展了 \(i\) 层,左集中有 \(x\) 个元素入队,右集中有 \(y\) 个元素入队,第 i 层有 \(z\) 个点,的方案数为 \(dp[i][x][y][z]*2^{排骨龙}\),当右1恰好出现在这 \(z\) 个点时,答案贡献为 \(i\)
- 排骨龙是啥?仍未决定的边的个数!哪些边仍未决定呢?冷静分析即可。
sakura
做法
- 等价于网格图路径方案数。
- 扩展 Lucas 即可