连续攻击游戏
这道题目其实就是上面一道“超级英雄”
这里将属性作为左部,装备作为右部就好了
其实我最开始是没有想到的,因为我一直在想把某一个对象作为二分图的节点
这道题目就启发我们,其实不是非要把一个对象作为二分图的节点的,我们还可以把两个对象分别作为二分图的左右部来考虑(转换对象法)
另外这道题目的
然后时间复杂度就正确了,可以从交错树的角度分析
注意交错树每一层的节点的属性都是相同的(指是左部节点还是右部节点),而且对于右部节点的层,每个节点只有唯一一个儿子,也就是说交错树的规模是左部节点的两倍,于是我们分析左部节点就好了,由于有
另外还有并查集解法,复习的时候做一下
思路正确性:对于没有环的连通块,我们任选
update 2024.5.13
并查集做法的思路是对的,但是合并的时候代码是错的
hack数据:
3
1 2
1 2
2 3
错误原因也比较显然,就不赘述了
正确做法应该是记录点数和边数,只要边数不少于点数,那么就说明有环(注意这是一个连通集,没有环当且仅当边数为点数减一)
这个思路的来源就是转换对象法,将属性作为考虑对象,然后尝试转化为图论,由于只给了两个属性值,就相当于告诉了边的起点和终点了(要对
这题的并查集也算个经典模型吧,相当于把每条边要么分给其起点,要么分给其终点,只能分给一个点
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构