2022-10-26
被gtyz供的题创死了,但本质上还是菜...
》
T1 简单想一想就发现其实你不会跳超过
次,然后对每个节点维护每种权值对应的下一个元素是谁,可以用一个 last
数组来做,非常简单
》
T2 手玩样例发现其实答案只有四种取值
-1 / 0 / 1 / 2
,其中-1
是两个点不连通的情况,0
是同一个点,1
的话手玩一下发现是存在一条路径使得,否则就是 2
,然后可以使用一个并查集来弄
》
T3 创死我了....,一个钟做完 T1T2 后把剩下的三个钟都用来整 T3 了,人麻了。首先先把怎么判赢弄出来,可以参考纳什博弈,然后就是只要存在某行之和为奇数即可,然后就会一个
的做法,就是先前缀和之后哈希,然后就是数一数有多少的四元组 使得 ,然后可以考虑维护哈希,接着就啥都想不到了,然后下午改题的时候 lsy
告诉我是sam
模板3,人傻了
cp做法,就是如果你对很多个串排序之后,你的必然有
》
T4 看了一眼,迅速发现性质:
(1)
T
是超现实树R(T)
是超现实树
(2)T
是超现实树cut(L(T))=L(R(T))
而且是充要的,就是直接考虑怎么生成一棵超现实树,然后就是假如你现在有一棵超现实树,然后你把左子树
T
抽出来,然后生成一棵T'
使得cut(T')=T
,然后问题就转化成了:生成若干棵树
使得 T[1]
是一个点,而对于,都有 cut(T[i])=T[i-1]
,然后这若干棵树的总叶子个数不超过n
,总点数不超过m
,最大深度不超过k
直观的,考虑dp,设
f[a][b][c][d][e] 表示深度为 a ,上一棵树的总点数是 b ,叶子数是 c ,当前所有树的总点数是 d ,总叶子数是 e 的树的个数,转移显然
然后发现转移是 f[a][b][c][d][e] -(x>=c)-> f[a+1][b+x][x][d+b+x][e+x]
考虑优化,一开始的时候f[1][0][0][1][1]
是有值的,别的都没值,然后你发现无论怎么转移f[][x][][][y]
的x,y
的差都是不变的,因为一开始只有x=0,y=1
有值,所有在所有的后续转移出的状态中,一定都满足b+1=e
然后你就成功的优化了状态,就是以后想优化dp
的话还是要先把式子写出来之后观察式子来优化。
然后写一下题解做法,就是你发现实际上你从
T[1]
逐渐生成到T[n]
这个dp
的过程真的非常的困难,优化也难以实现(毕竟没见过),然后其实不难发现,如果你一定确定T[n]
了,然后你把中间的树们从T[n]
一步步推出来是很简单的,所以说这个路径的个数本质上就是T[n]
的个数,然后只需要dp
T[n]
即可
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效