【题解】ABC 209
E.
题意:给定一个初始字符串,可以把它接龙下去,最后无法操作的人判负。若双方都采用最优策略,即先保证自己不输,再击败对方,输出博弈结果。 n<=2e5
。
Solution:
这是一道图论的博弈问题,考虑回溯 + 逆推。
首先这个平局很难判断,我们不妨先求出必胜或必败的状态,如果两者都不是,则说明是平局状态。首先初度为零是必败态,其次,如果后继有一个必败态,则它为必胜态;如果后继全为必胜态,则它为必败态。
这个环比较难搞,不妨看下图:
这是环上都有值的情况。有时候会形成一个封闭的环,双方都不愿意走出这个环,否则都是自己输,如下图:
那么此时环上的状态都是平局了。
最后考虑优化建边,不难想到将首和尾连边,这样出发点就是尾字符。
时间复杂度 O(n)
。
F.
题意:给定 n
个数以及高度,砍掉一棵树的代价为 h[i-1]+h[i]+h[i+1]
,同时令 h[i]=0
。求一个砍树的排列,使得总花费最少。求排列的个数。
Solution:
考虑每一棵树 i
,如果它相邻的树比它先砍,则自己每次要增加代价 h[i]
。
这样,对于 1<=i<=n-1
,如果 h[i]<h[i+1]
,则 i+1
先砍最优;如果 h[i]>h[i+1]
,则 i
先砍最优。
那么令 dp[i][j]
前 i
棵树的所有排列数,使得树 i
是要砍掉的第 j
个元素 ,这里有隐含条件 j<=i
。不难写出转移式,通过前缀和优化,时间复杂度 O(n^2)
。
这种为每个转换插入元素的 DP 结构称为“插入 DP”。
__EOF__

本文作者:仰望星空的蚂蚁
本文链接:https://www.cnblogs.com/cqbzly/p/17530328.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/cqbzly/p/17530328.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」