「模拟赛」高考期间

发布时间 2023-06-10 16:23:22作者: Saintex

因为 June 那个帖题可能会有点多翻也翻不过来,所以新开一个,方便补题。


20230605
T1
题意:求一个图两两之间有无哈密顿路。\(n\leqslant 24\)

可以通过 bool 转 int 的经典状态压缩操作/bitset得到 \(\mathcal {O}(2^n n^2)\) 的答辩做法,但是甚至跑不过 \(\mathcal {O}(2^nn^3)\) 的暴力。

中途其实想过meet-in-the-middle,但是忘记了 meet-in-the-middle 的其中一种形式是通过钦定中间点使求的两端变成一样的形式。就本题而言,直接钦定中间点为 \(1\) 即可,然后根据上面那个 trick,维护 \(dp_s\) 表示终点集合即可,求答案时枚举一个点,时间复杂度 \(\mathcal {O}(2^n n)\)


T2
赛时根本没怎么想,原因是感觉这个分段很复杂。

  • “结束游戏”可以设置到负无穷。
  • 感觉一下这个分段,小于等于某个值 \(l\) 肯定就变成 \(-\infty\) 了,否则有区别的只能是某个最大值取到没有。所以 \([l+1,r]\) 这段大概是 \(u\),而 \([r+1,+\infty)\) 大概是 \(i+v\)。(\(u,v\) 是定值,计算得出 \(v=-r+u\))(其实只分成常数段的原因是单调性:序列的单调性一直保留的!并且 \(a_{i+1}-a_i\leqslant 1\)
  • 所以线段树维护 \(l,r,u,v\) 即可。单log。

T3
太复杂了,摆。


20230606
T1
考场上一直做 T1?。最后 \(n^4\) 不会优化。?

这其实就是个条件概率。

优化应该类似等差数列,懒得想了。


T2

  • \(2\sim n\) 对应字符串的各个位置。
  • 树是有启发性的,让我们对树进行思考。
  • 发现处理 \(x\) 的字符串,只要将 \(x\rightarrow 1\) 的所有字符换成 \(O\) 即可。这样树上两个点不同的位置就是他们之间的路径减去 LCA,刚好就是距离。

T3

  • 考虑一个经典 trick 是求子集和。(FMT)这样容斥一下就可以不强行要求或起来一定是这个数了。
  • \(k\) 很小,考虑从这个入手。发现对答案集合 \(\{ans\}\),本质不同的影响其实只有 \(2^k\) 个!!!这使我们想到给一个数大小标记,它的超集都可以收到贡献。所以枚举所有组合情况,乘一个贡献 \(val_S\) 即可。但是这样肯定会有重复,所以想到容斥。具体地,具体的。
  • 最后子集前缀积一下,再 IFMT 一下就得到答案了。
  • 感觉难点在容斥。

20230608
T1
平衡树。思路看代码应该很显然这里不写了。但是可以对我这个解法进行优化,看 link

码了两百多行,打了一个小时调了一个下午,望周知。

细节很多,还不如先打个暴力呢。(

突然发现好像是一道 3500,第一次切 3500。(不过感觉难度并没有这么多


T2
蜜汁字符串。


T3
还是很妙的。考虑将 \(d\) 扩倍数转化一下题意:能跳到 \(x\) 或者 \(x+d\)

考虑这个 \(d\leqslant 16\) 的部分分,想到直接记录状压即可。

发现 \(x\leqslant 150\),非常不自然地,我们将 \(x,x+d,x+2d...\) 归为一类,发现这个类的长度 \(\leqslant 9\),这提醒我们状压。然后类似插头 dp 转移即可,这部分我还没有想清楚,到时候去问问其他人。()


20230609
T1
原题刚好没补真是很搞心态的事情。直接就不想做了。(原来这个题还是弱化版)

考虑 \(c=1\) 的情况。自然 想到数位 dp,可以理解成第 \(x\) 位有 \(m-x\) 个随机变量取 \([0,b-1]\),剩下的都是 \(0\),求方案数。很简单一个 dp 就完了。

考虑 \(c=0\) 的情况无非是多了个边界而已。加一维记录还剩了几个随机变量即可。


T2
摆。


T3
摆。