
枚举
文章平均质量分 67
Ypuyu
Ypuyu
展开
-
[H模拟] lc3257. 放三个车的价值之和最大 II(模拟+暴力枚举+双周赛137_1+双周赛137_2)
我也搞不懂,为什么当时会写一个 dfs 去做这个题目,不如直接 for for for 完事了,思路没有想好,想歪了又很难更正过来啊…这一套暴力枚举思想很直接,但实现上比较简洁,代码常数小,所以还是可以通过的。蛙神针对这个题目,做了复杂度分析。还是比较有参考价值的,可以看看。目前没看到什么好的题解,计算量计算正确的话,直接暴力枚举就行了。看看 蛙神 的题解和代码实现即可,这里直接 CV 过来吧。原创 2024-08-18 02:00:33 · 421 阅读 · 0 评论 -
[枚举] aw3785. 战舰(枚举+前缀和+经典好题+CF965B)
文章目录1. 题目来源2. 题目解析1. 题目来源链接:3785. 战舰2. 题目解析暴力题确实暴力方法做就行了。O(n2)O(n^2)O(n2) 的话可以 递推+前缀和预处理 出来每个点四个方向上的可达长度,要注意,算上该点本身最长的长度是 k。思路:枚举每个安全区域点,都可能放战舰,枚举可行的方案数。该点可以横着放,竖着放。即,有两种方案数需要计算。找到横向该点的连续安全区域,注意别越过边界,同时不可距离该点太远,不可超过 k。假设该点的横向连续的安全区域为 (l,r)(l, r)(原创 2021-07-31 22:50:10 · 135 阅读 · 0 评论 -
[思维] aw3789. 隐藏字符串(脑筋急转弯+枚举+递推+aw周赛010_3)
文章目录1. 题目来源2. 题目解析1. 题目来源链接:3789. 隐藏字符串2. 题目解析猜结论就行了。最优解一定是长度为 1 的,或者长度为 2 的子串。因为如果长度大于 3 并且还是等差数列的话,那么长度为 1、2 的子串一定也包含在其中,所以,所以最优解一定在长度为 1、2 的子串中包含的有。计算:长度为 1:直接遍历每个字母取出现次数最高的即可。长度为 2:前缀和 f[i][j] 统计字母 ij 出现的次数,因为仅有 26 * 26 种情况。即,假设当前枚举的是以字符 x,结原创 2021-07-31 21:21:45 · 334 阅读 · 0 评论 -
[H枚举] lc149. 直线上最多的点数(枚举+细节优化+数学)
文章目录1. 题目来源2. 题目解析1. 题目来源链接:149. 直线上最多的点数大佬题解:直线一般式,C++ STL 应用2. 题目解析枚举+算法优化。暴力做法:枚举直线,两点确定一条直线,O(n2)O(n^2)O(n2)。针对每个直线,确定直线上有多少点,直接套直线方程即可,O(n)O(n)O(n)。总的时间是 O(n3)O(n^3)O(n3)。优化做法:不先将所有直线枚举出来,而只枚举直线上的一个点,称为中心点。那么经过这个点的直线是 360° 任意多条的。然后再枚举其原创 2021-06-28 23:28:53 · 204 阅读 · 1 评论 -
[枚举] aw3711. 方格涂色(二进制枚举+模拟)
文章目录1. 题目来源2. 题目解析1. 题目来源链接:3711. 方格涂色2. 题目解析二进制枚举题目,按题模拟即可。四角比较特殊,每个角有两种情况,放、不放。则共有 2^4=16 种情况,则共枚举这 16 种情况,每个角上点涂色会影响它所在的两条边,判断四条边上中间 n-2 个点数量是否合法即可。注意这题是多组数据…在做的过程中不注意修改了原数据…一直错。时间复杂度:O(24)O(2^4)O(24)空间复杂度:O(1)O(1)O(1)#include <bits/stdc+原创 2021-06-22 20:04:29 · 158 阅读 · 0 评论 -
[Mdfs] lc剑指 Offer 38. 字符串的排列(全排列+枚举顺序+组合类型枚举+知识理解+模板题)
文章目录1. 题目来源2. 题目解析1. 题目来源链接:剑指 Offer 38. 字符串的排列相关:[Mdfs] lc47. 全排列 II(dfs+去重处理+经典)[M模拟] lc31. 下一个排列(模拟next_permutation函数+思维)2. 题目解析就是个全排列的去重,也可称为组合类型枚举。和 [Mdfs] lc47. 全排列 II(dfs+去重处理+经典) 一模一样。排序,保证相同元素的相对位置顺序不发生改变就能去重。 基于此,一般可以枚举每个数放的位置,也可以枚举每个位置原创 2021-06-22 10:39:34 · 145 阅读 · 0 评论 -
[贪心] aw3661. 重置数列(贪心+枚举+细心+aw周赛003_2)
文章目录1. 题目来源2. 题目解析1. 题目来源链接:3661. 重置数列2. 题目解析多看看数据范围再动手做吧…伞兵了。a[i] 的范围很小,是 [1, 100],故可以在 [1, 100] 中枚举最后数组的取值是多少,就行了。假设最终数组所有数相同且为 c,那么当 a[i]=c 时,跳过即可。当 a[i]!=c,则直接将 a[i]~a[i+k] 贪心的全部变成 c 即可。这种题又像是二分答案一样,总是以说不清的另一种方式入手…挺不错的。一开始以为只会变为众数,但是还是太年轻了…时原创 2021-06-12 20:43:06 · 229 阅读 · 0 评论 -
[枚举] aw3646. 分水果(二进制枚举+思维)
文章目录1. 题目来源2. 题目解析1. 题目来源链接:3646. 分水果2. 题目解析很明显,答案不会超过 7,且每种小朋友拿到手的水果状态是确定的。所以,可以直接暴力枚举 7 种情况,每种情况有选、不选两种情况,总共是 2^7 种情况。判断每种情况下用的水果数量,如果没有大于给定水果的话,该状态合法,更新一下答案即可。很经典的二进制枚举:#include <bits/stdc++.h>using namespace std;int s[7][3] = { {0, 0,原创 2021-06-08 23:52:27 · 138 阅读 · 0 评论 -
[数学] 能被整除的数(容斥原理+二进制枚举)
文章目录1. 容斥原理+数学1. 容斥原理+数学890. 能被整除的数重点: 容斥原理暴力枚举,最坏需要针对每个数 nnn,枚举完所有的质数 mmm 查看能否乘除。则时间复杂度为 O(nm)O(nm)O(nm),超时。以样例,采用容斥原理进行答案求解思路:定义集合 S2=2、4、6、8、10S_2=2、4、6、8、10S2=2、4、6、8、10,S3=3、6、9S_3=3、6、9S3=3、6、9,其中 S2、S3S_2、S_3S2、S3 中集合元素是所能被 2,3 整除的元素。那原创 2020-11-07 11:07:34 · 514 阅读 · 0 评论 -
[dfs] aw3481. 阶乘的和(dfs+二进制枚举+01背包+常见问题+错误记录)
文章目录1. 题目来源2. 题目解析1. 题目来源链接:3481. 阶乘的和2. 题目解析阶乘增长速度很快,9!=362880,0!=1,所以其实就是前 10 个数只能选 1 次,能否凑出 n 的问题。也就是枚举这 10 个数的子集。二进制枚举,dfs,01 背包均可。代码:#include <iostream>#include <cstring>#include <algorithm>using namespace std;const int原创 2021-05-16 21:51:38 · 140 阅读 · 0 评论