搜索
文章平均质量分 69
小酒窝.
研一菜鸡一只,欢迎来交流讨论,一起进步!
展开
-
ICPC 2022网络赛(1) - D Find the Number(暴搜预处理)
后面对于每个询问,找到第一个大于等于左端点的满足的数,判断是否在区间中。一共30位,暴搜+剪枝完全可以求出所有满足的数。多用点野路子,不是它说啥就是啥。不要光跟着它的思路走。,找到区间中的任意一个好数。一共 T 次询问,每次询问给出一个区间。一共 1e9 个数,但是满足描述中。能 a 掉题目的方法都是好方法。的只有 5e5 个数。原创 2022-09-18 17:20:06 · 711 阅读 · 0 评论 -
ICPC 2020沈阳站 - D. Journey to Un‘Goro(暴搜+剪枝)
所以对于 0 到 n 这 n+1 个位置中,s[i] 为奇数的个数和 s[i] 为偶数的个数决定了一共有多少个完美区间:如果有 x 个 s[i] 为奇数,y 个 s[i] 为偶数,那么就会构成 x*y 个完美区间。如果对于一段区间 [l, r] 来说,s[r] - s[l-1] 为奇数,那么区间中红色位置个数就为奇数,这段区间就是完美区间。输出最多的完美区间数,按字典序输出所有构造方案(如果超过100种方案,只输出前100种)考虑前缀红色位置的个数:定义前 i 个位置中,红色位置的个数 s[i]。原创 2022-09-18 15:52:13 · 769 阅读 · 0 评论 -
贴纸拼词 —— 记忆化搜索 / 状压DP
为了方便转移,可以将长度最大为 15 的串进行状态压缩,对于某一位来说如果是 1 说明没删,如果是 0 说明删掉了,状压成一个整数。对于当前的字符串 s 来说,选择一个字符串 t,将 s 中能由字符串 t 剪切得到的位置删掉后得到新串,然后递归到这个新串。遍历所有集合,对于当前集合来说,选择一种字符串删除若干元素来得到一个新的集合,用新集合状态 + 1 得到当前集合状态。现在要选出一些字符串,将其每个字符剪切后可以拼接成字符串 S。如果当前串为空,说明到了终点,返回 0。字符串 a[],每种字符串无限个。.原创 2022-08-03 16:22:00 · 141 阅读 · 0 评论 -
acw 倒水问题(爆搜出所有方案)
题目链接题目有三个杯子,容量分别为 A,B,CA,B,CA,B,C。初始时,CCC 杯装满了水,而 A,BA,BA,B 杯都是空的。现在在保证不会有漏水的情况下进行若干次如下操作:将一个杯子 xxx 中的水倒到另一个杯子 yyy 中,当 xxx 空了或者 yyy 满了时就停止(满足其中一个条件才停下)。请问,在操作全部结束后,CCC 中的水量有多少种可能性。0≤A,B,C≤40000≤A,B,C≤40000≤A,B,C≤4000思路一开始觉得是思维题,想了一会没有思路。一看标签是bfs/dfs原创 2022-07-12 17:17:39 · 173 阅读 · 0 评论 -
状态压缩 —— 题型全归纳,超多例题,万字详解。
状态压缩 bfs/dfs/最短路、状态压缩DP,题型全归纳,一篇文章学会状态压缩!原创 2022-04-15 23:10:53 · 949 阅读 · 1 评论 -
ccpc 桂林 - K. Tax —— 搜索
题目链接题意:给出一个 n 个点,m 条边的无向图。(2≤n≤50,n−1≤m≤n(n−1)/2)(2≤n≤50 , n−1≤m≤n(n−1)/2)(2≤n≤50,n−1≤m≤n(n−1)/2)每条边对应一种类 cic_ici,长度都为 1。每一种类 ttt 的边有价值 wtw_twt。从起点 1 出发,经过一条边的花费为:k∗wik * w_ik∗wi,其中 k 为走过的此种类的边的次数。对于每个点,问从起点到该点的最短路中,最小花费为多少?分析:一开始是这样想的:在队列中存结构体原创 2022-04-12 18:15:03 · 387 阅读 · 0 评论 -
XCPC - F. Honeycomb —— 01bfs,最短路
题目来源题意:给出一个蜂窝式的地图,两个格子之间可能连通。问从起点到终点最少经过多少个格子?输入格式:给定 n,m,表示一共 n 行 m 列格子。接下来 (4n+3) 行,每行最多 (6c+3) 个字符,构成一个格子阵。13 4 +---+ +---+ / \ / \+ +---+ +---+ \ \ / \ + + S +---+ T + / \原创 2022-04-06 15:16:46 · 168 阅读 · 0 评论 -
ABC 246: E - Bishop 2——Flood Fill + 记忆化方向
题目来源题意:给出 N*N 的棋盘,每个位置可能有障碍物。行走规则:每步操作可以往斜着的四个方向走任意格。如果从 (x1, y1) 走到 (x2, y2),需要保证这条路径中没有障碍物。一个棋子从起点 (sx, sy) 出发,问最少走多少步能够到达终点 (ex, ey) ?思路:很明显能够看出来是 bfs 中的洪水填充问题。对于每个方向,将这个方向中的能走的所有点都放进队列。对于每个点,先遍历四个方向,再遍历这个方向中的所有点:走到一个点,如果之前走过了,跳过。如果走到障碍原创 2022-04-03 16:51:37 · 885 阅读 · 0 评论 -
海贼王之伟大航路——状压记忆化搜索
海贼王之伟大航路题意:一共 n 个点,给定任意两点的距离 dis[i,j]dis[i, j]dis[i,j]。问,从点 1 到点 n,中途所有节点经过且仅经过一次,距离最短为多少?(2<n≤16)(2 < n ≤ 16)(2<n≤16)思路:点数很小,可以暴搜。但是暴搜也有技巧,如何较高效率的暴搜?剪枝!每个节点经过且仅经过一次,那么就是初始为1,终点为n的全排列。但是直接搜的话复杂度为 O(n!),考虑剪枝。一开始的做法是这样的,递归中用一个小技巧 swap 操作,原创 2022-03-27 21:23:45 · 913 阅读 · 0 评论 -
行走路径——拓扑序dp / 记忆化搜索 + 判环
3828. 行走路径题意:给定一个 n*m 的矩阵,每个位置有一个数 x (1≤x≤4)。规定只能按照 1→2→3→4→1→2→...1→2→3→4→1→2→...1→2→3→4→1→2→... 的顺序行走,并且称 1→2→3→41→2→3→41→2→3→4 为一轮。问,在这个矩阵中,最多能走多少轮?做法1:拓扑序+dp做法2:记忆化搜索...原创 2022-03-23 18:58:01 · 303 阅读 · 0 评论 -
筑巢——树形dp
筑巢题意:给定一棵树,每个节点有权值 aia_iai,每条边有权值 www。选取一个非空连通块,使其权值之和最大。−109≤ai,w≤109−10^9 ≤a_i, w ≤10^9−109≤ai,w≤109分析:将任意一点看作根节点。从根节点往下递归,回溯的时候从下往上更新。定义f[x]: 在以 x 为根的子树中,非空连通块的最大权值。对于一个节点 x,遍历其所有子节点 tx,如果子节点所在子树非空连通块最大权值 f[tx] 加上 连边w 大于0,f[x] += f[tx] + w。原创 2022-03-19 16:06:00 · 277 阅读 · 0 评论 -
可达性统计 —— 拓扑排序 / 记忆化搜索 + bitset状态压缩
题意:给定一张 N 个点 M 条边的 有向无环图,分别统计从每个点出发能够到达的点的数量。1≤N,M≤300001≤N,M≤300001≤N,M≤30000分析:注意到该图是有向无环图,那么其中的节点就满足拓扑序。对于拓扑序列来说,前面的点一定会指向后面的点。所以我们可以从后往前处理,对于遍历到点 x,其指向的节点的可达点就已经固定了。于是当前点 x 的可达点就是指向节点的所有可达点。但是不能直接将子节点的可达点个数相加,因为子节点间的可达点可能有重复。对于重复的元素只取一个,我们可以想到 或原创 2022-03-14 14:41:15 · 603 阅读 · 0 评论 -
FatMouse and Cheese——记忆化搜索、DAG+dp
FatMouse and Cheese题意:给定 n∗nn*nn∗n 的矩阵,每个格子有一个权值。现在从格子 (1,1)(1,1)(1,1) 出发,每次可以径直走 1~k 个格子,需要保证走到的格子的权值要大于当前格子的权值。问,当走到不能走的时候,所走过的路径权值之和最大是多少?方法1:记忆化搜索。每个点存储从该点出发,走到不能走的时候,走过路径权值和的最大值。从起点开始 dfs,如果走到一个点有存储,说明之前走过,直接用;否则这个点之前没走过,走一遍记录最大值。这样,每个点只会搜一次,时原创 2022-03-17 20:52:50 · 553 阅读 · 0 评论 -
字符王国——DAG+dp
3188 字符王国题意:给出一个 n 个点 m 条边的有向图,每个点上有一个字母。问图中的路径上出现次数最多的字母 出现的次数 为多少?分析:一开始想把所有的字母放在一起更新状态,但是状态不好转移。定义:f[i, j]:到位置 i 时,字母 j 最多出现的次数。状态转移:对于每个位置,分别遍历更新 26 个字母:如果转移过来位置的字母和当前字母相同的话:f[tx][i] = max(f[tx][i], f[x][i]+1);否则:f[tx][i] = max(f[tx][i], f[原创 2022-03-17 12:09:30 · 457 阅读 · 0 评论 -
Digital Path——拓扑图dp、记忆化搜索
Digital Path题意:给定 n*m 的矩阵,每个格子上有一个数值,问满足下列条件的路径条数 (mod 1e9+7):路径中的相邻两个格子有公共边;路径不可能被扩展(尽可能长);路径上至少包含四个格子;从一个格子只能向比其值大 1 的格子移动。分析:看到题目就觉得是搜索题,然后用 dfs 写了一下,超时。那么就要考虑记忆化搜索。常规的思路是,将一个点往后能够走的路径个数存下来。当走到这个位置,如果发现没有存储,就 dfs 走一遍,回溯之后这个点就有存储了;如果有存储,那就直接用。原创 2022-03-16 22:41:23 · 999 阅读 · 0 评论 -
Rake It In——搜索解决博弈问题
Rake It In题意:Alice 和 Bob 正在一个 4∗44*44∗4 的棋盘上进行博弈。两个人轮流操作,Alice 先手。操作:选择棋盘上的一块 2∗22*22∗2 的区域,这四个数字和便是这一次操作的分数。然后将这四个数字逆时针旋转 90 度。一共进行 2∗k2*k2∗k 轮操作,每人 kkk 轮。两人操作的分数之和作为最终的分数。Alice 想让最终的分数最大化,而 Bob 想让最终的分数最小化。假设两人都足够聪明,问最终的结果会是多少?(1≤k≤3)(1 \le k \le 3原创 2022-03-15 15:22:13 · 233 阅读 · 0 评论 -
点权(bfs,最短路,牛客练习赛93)
Linking题意:简化后的题意为:给出节点数为 nnn 的一棵树,每条边有边权 cic_ici。(n≤105,ci≤103)(n \le 10^5 ,c_i \le 10^3)(n≤105,ci≤103)一个点必须由两个相邻的已更新的点更新,花费为两条边的边权之和。初始入度小于2的节点(叶子节点)已更新。对于每个点,求出能够将其更新的最小花费。如不可更新,输出-1。思路:从所有的叶子节点往中间更新,两个已更新的节点才能更新一个节点。求得到每个节点所需要的最小花费。乍一看,是多源bf原创 2021-12-11 19:33:00 · 1320 阅读 · 0 评论 -
2021 四川省赛 L. Spicy Restaurant(最短距离相互性,多源bfs)
题目链接大意:给定一个 n 个点,m 条边的无向图,每个点有点权 wi,边权都为 1。(1≤n,m≤105,1≤wi≤100)1 \le n, m \le 10^5, 1 \le w_i \le 100)1≤n,m≤105,1≤wi≤100)一共 q 次询问,每次给出一个点 x,输出不超过 x 的点权的所有点中,距 x 最近的点的距离。(1≤q≤5×105)(1≤q≤5×10^5)(1≤q≤5×105)思路:一共有5e5次询问,所以如果是每次询问都现求的话,每次求答案都需要在O(logn)的复原创 2021-11-13 12:05:07 · 620 阅读 · 0 评论 -
AtCoder 224.D - 8 Puzzle on Graph(bfs,妙)
AtCoder 224.D - 8 Puzzle on Graph题意:一个含有 9 个节点的图(边数 ≤ 36),有 8 个物品分布在 8 个节点上:第 i 分布在节点 vi 上。问,能否通过空节点和其连节点间的物品移动,使得最终物品 i 在节点 i 上?如果可,输出最小操作步数;否则,输出-1。思路:由 初始状态 变化为 最终状态,每次操作都会将状态改变。问最小操作次数。和 奇怪的电梯 这题类似,都用到了bfs的重要性质,求最短路径(最小操作次数)。第一次搜到该点所走的路径是最短的!所以原创 2021-10-25 21:38:06 · 504 阅读 · 0 评论