
Bit
Mamba_ZJP
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
状态压缩dp例题+分析
牵扯到选不选,而且选择达到的目标给的范围很小的时候,多半可以压缩状态。 AcWing 1243: https://www.acwing.com/problem/content/description/1245/ #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<vector> #include<string> #in.原创 2020-08-19 16:43:22 · 292 阅读 · 0 评论 -
位运算/LeetCode 260/LeetCode 136
题目链接:https://leetcode-cn.com/problems/single-number/ TC:O(n),MC:O(1) 如此一来,暴力和利用哈希表(最坏情况是前面n/2都是出现了两次的数,这样所需要开辟的内存空间还是达到了O(n)级别)都不可以了。 题目中有个信息很重要:n-1个数都出现了两次,联系到位运算中的异或:a^a=0,0^a=a,并且a^b^a=(a^a)^b=0^b=b,位运算是满足交换律和结合律的,自然题目就解决了,一开始用0去异或每一个数,这样最后异或完的必定是只出现一.原创 2020-05-22 12:30:12 · 190 阅读 · 0 评论 -
状态压缩/LeetCode 1371
暴力枚举起点i和终点j,同时还要预处理做前缀和,用pre(i,k)表示前i个字符第k个元音字符出现的次数。TC:O(n2),TLE。 解题关键在于偶数次,我们需要知道一个前提事实:偶数-偶数=偶数,奇数-奇数=偶数。也就是说当我们遍历到第j个字符时,这时五个元音的奇偶出现次数为一个状态,假如遍历到i个字符(i < j),这时五个元音的奇偶出现次数和第j个是一样的话,j-i就是满足题意的一个子串的长度(所有元音都出现过偶数次)。 也就是说我们要记录遍历到每个字符时,前面的所有元音的状态。然后不断更新..原创 2020-05-20 23:32:17 · 378 阅读 · 0 评论