摘要: 题意:n<=40, m <= 1e18,n个数中,组合的和<=m的组合有多少种。 分析:n是40,双向广搜的思路,压缩搜索范围,分成2个 2^20进行搜索。 再二分查找合法的另一半中的元素数量 void solve(){ long long n, m; cin >> n >> m; vector<l 阅读全文
posted @ 2024-01-10 22:01 _Yxc 阅读(18) 评论(0) 推荐(0)
摘要: 题意:给一个n个数字的集合,问集合中有多少个子集满足后面的条件。 其中条件是该集合可以分为两个独立子集,这两个子集的和相等。 分析:第一种思路是枚举所有的集合,然后对每个集合进行暴力枚举,时间复杂度O(1 << 40)得分45。 第二种思路是枚举所有的集合,然后对集合元素求和,转01背包问题,时间复 阅读全文
posted @ 2024-01-10 18:48 _Yxc 阅读(36) 评论(0) 推荐(0)
摘要: 题意:给起始和终止串A和B,以及不超过6个字符串变换规则,求A->B能否在10步以内变换完成。 分析:暴力bfs每次有6条路可以走,时间复杂度是6^10 大概6e8的时间复杂度,会TLE。于是这题是一道经典的双向bfs。 直接开两个队列,两个map,暴力搜1~5步即可。 双向bfs的时间复杂度是2 阅读全文
posted @ 2024-01-10 12:02 _Yxc 阅读(66) 评论(0) 推荐(0)
摘要: 问题描述:密码锁有起始和目标两个状态,状态有4个连续数字,数字范围是1~9。其中特殊情况9 + 1 = 0, 1 - 1 = 9。 每次操作可以交换相邻的两个锁上的数字,或者将该位上数字±1。求最小操作次数 分析:是一道双向广搜的题,但是这个题目的第一个思路就是枚举所有的排列组合状态,然后对每个状态 阅读全文
posted @ 2024-01-10 10:59 _Yxc 阅读(69) 评论(0) 推荐(0)