ACWing算法提高课
文章平均质量分 67
leimingzeOuO
已退役
展开
-
treap平衡树模板
【代码】treap平衡树模板。原创 2022-09-15 13:09:24 · 129 阅读 · 0 评论 -
天梯赛备赛刷题记录(4.18)
蓝桥杯打完了,打的确实lj,好好备天梯赛备赛分为总体两部分 1.基础强化训练 2. 真题模拟目录4.101097. 池塘计数1098. 城堡问题1106. 山峰和山谷1706. 迷宫问题1100. 抓住那头牛173. 矩阵距离(*)1107. 魔板175. 电路维修(*)1112. 迷宫1113. 红与黑4.101097. 池塘计数dfs#include <bits/stdc++.h>using namespace std;const int N=1010;char g[N][原创 2022-04-10 21:52:24 · 780 阅读 · 0 评论 -
状态压缩dp常见模型
目录一般处理方式例题一:小国王例题二:玉米田例题三:炮兵阵地一般处理方式所谓状态压缩dp,就是用二进制表示状态,再转换成十进制,方便存储例如有一排灯,开着的可以用 1 表示,关着的可以用 0 表示,1011表示第1,3,4灯亮着,2 关着,所以这种状态可以用一个十进制11表示这种状态,进而遇到具体情况进行其他操作。一般进行操作的模板:暴力搜索所有的行的状态,将合法的行筛进state(vector)中根据题意,将相邻行之间的所有合法配对方式存到二维数组中,存下标根据题意进行dp例题一:原创 2022-04-04 11:42:02 · 198 阅读 · 3 评论 -
【树形DP】有依赖的背包问题
目录有依赖的背包问题有依赖的背包问题题目链接:有依赖的背包问题如果选择 物品5,则必须选择** 物品1 **和 物品2。这是因为 物品2 是物品5 的 父节点,物品1 是 物品2 的 父节点。求一个方案,使得该选择的物品合法,总体积不超过 V,且总价值最大。我们考虑树形DP对于结点i,对第 i 件物品只会依赖第i-1物品的状态如果本题我们也采用该种状态依赖关系的话对于结点i,我们需要枚举他所有子节点的组合** 2^k**种可能再枚举体积,最坏事件复杂度可能会达到 O(Nx2^NxV)原创 2022-03-31 23:30:23 · 2456 阅读 · 0 评论 -
【C++】并查集模板及简单应用
并查集模板原创 2021-12-25 19:04:20 · 391 阅读 · 0 评论 -
【c++】树状数组模板及简单应用
数据结构之树状数组原创 2021-12-24 07:06:20 · 1176 阅读 · 2 评论 -
【c++】《搜索习题集》题解,更新至DFS之搜索顺序
目录Ⅰ. Flood Fill1097. 池塘计数1098. 城堡问题Ⅰ. Flood Fill1097. 池塘计数题目链接:池塘计数题目描述给定一个NXM的农田,雨水用 “W” 表示,如果不是则 “.”,每组相连的积水单元格集合可以看作是一片池塘。每个单元格视为与其上、下、左、右、左上、右上、左下、右下八个邻近单元格相连。请你输出共有多少片池塘,即矩阵中共有多少片相连的”W”块。题目分析模板题,dfs和bfs都可以解CODE(BFS)#include <bits/stdc++.原创 2021-11-12 01:20:34 · 1154 阅读 · 0 评论 -
2021-10-19(树形dp)
1069. 凸多边形的划分给定一个具有 N 个顶点的凸多边形,将顶点从 1 至 N 标号,每个顶点的权值都是一个正整数。将这个凸多边形划分成 N−2 个互不相交的三角形,对于每个三角形,其三个顶点的权值相乘都可得到一个权值乘积,试求所有三角形的顶点权值乘积之和至少为多少。输入格式第一行包含整数 N,表示顶点数量。第二行包含 N 个整数,依次为顶点 1 至顶点 N 的权值。输出格式输出仅一行,为所有三角形的顶点权值乘积之和的最小值。数据范围N≤50,数据保证所有顶点的权值都小于109输入原创 2021-10-20 01:26:40 · 244 阅读 · 0 评论 -
2021-10-18(DP)
187. 导弹防御系统为了对抗附近恶意国家的威胁,R 国更新了他们的导弹防御系统。一套防御系统的导弹拦截高度要么一直 严格单调 上升要么一直 严格单调 下降。例如,一套系统先后拦截了高度为 3 和高度为 4 的两发导弹,那么接下来该系统就只能拦截高度大于 4 的导弹。给定即将袭来的一系列导弹的高度,请你求出至少需要多少套防御系统,就可以将它们全部击落。输入格式输入包含多组测试用例。对于每个测试用例,第一行包含整数 n,表示来袭导弹数量。第二行包含 n 个不同的整数,表示每个导弹的高度。当输原创 2021-10-18 01:29:36 · 125 阅读 · 0 评论 -
区间dp,绝对值不等式
104. 货仓选址在一条数轴上有 N 家商店,它们的坐标分别为 A1∼AN。现在需要在数轴上建立一家货仓,每天清晨,从货仓到每家商店都要运送一车商品。为了提高效率,求把货仓建在何处,可以使得货仓到每家商店的距离之和最小。输入格式第一行输入整数 N。第二行 N 个整数 A1∼AN。输出格式输出一个整数,表示距离之和的最小值。数据范围1≤N≤100000,0≤Ai≤40000输入样例:46 2 9 1输出样例:12#include <bits/stdc++.h>u原创 2021-10-14 22:59:31 · 112 阅读 · 0 评论 -
2021-10-07(单源最短路,dfs剪枝,prim)
1135. 新年好重庆城里有 n 个车站,m 条 双向 公路连接其中的某些车站。每两个车站最多用一条公路连接,从任何一个车站出发都可以经过一条或者多条公路到达其他车站,但不同的路径需要花费的时间可能不同。在一条路径上花费的时间等于路径上所有公路需要的时间之和。佳佳的家在车站 1,他有五个亲戚,分别住在车站 a,b,c,d,e。过年了,他需要从自己的家出发,拜访每个亲戚(顺序任意),给他们送去节日的祝福。怎样走,才需要最少的时间?输入格式第一行:包含两个整数 n,m,分别表示车站数目和公路数目原创 2021-10-08 01:02:27 · 159 阅读 · 0 评论 -
2021-10-06(并查集+01背包,区间DP)
1250. 格子游戏Alice和Bob玩了一个古老的游戏:首先画一个 n×n 的点阵(下图 n=3 )。接着,他们两个轮流在相邻的点之间画上红边和蓝边:直到围成一个封闭的圈(面积不必为 1)为止,“封圈”的那个人就是赢家。因为棋盘实在是太大了,他们的游戏实在是太长了!他们甚至在游戏中都不知道谁赢得了游戏。于是请你写一个程序,帮助他们计算他们是否结束了游戏?输入格式输入数据第一行为两个整数 n 和 m。n表示点阵的大小,m 表示一共画了 m 条线。以后 m 行,每行首先有两个数字 (x,y)原创 2021-10-06 21:44:20 · 91 阅读 · 0 评论 -
2021-10-05(状压dp滚动数组)
327. 玉米田农夫约翰的土地由 M×N 个小方格组成,现在他要在土地里种植玉米。非常遗憾,部分土地是不育的,无法种植。而且,相邻的土地不能同时种植玉米,也就是说种植玉米的所有方格之间都不会有公共边缘。现在给定土地的大小,请你求出共有多少种种植方法。土地上什么都不种也算一种方法。输入格式第 1 行包含两个整数 M 和 N。第 2…M+1 行:每行包含 N 个整数 0 或 1,用来描述整个土地的状况,1 表示该块土地肥沃,0 表示该块土地不育。输出格式输出总种植方法对 108 取模后的值。原创 2021-10-05 20:50:51 · 95 阅读 · 0 评论 -
2021-10-04(单元最短路建图,状压dp)
20. 最优乘车H 城是一个旅游胜地,每年都有成千上万的人前来观光。为方便游客,巴士公司在各个旅游景点及宾馆,饭店等地都设置了巴士站并开通了一些单程巴士线路。每条单程巴士线路从某个巴士站出发,依次途经若干个巴士站,最终到达终点巴士站。一名旅客最近到 H 城旅游,他很想去 S 公园游玩,但如果从他所在的饭店没有一路巴士可以直接到达 S 公园,则他可能要先乘某一路巴士坐几站,再下来换乘同一站台的另一路巴士,这样换乘几次后到达 S 公园。现在用整数 1,2,…N 给 H 城的所有的巴士站编号,约定这名旅原创 2021-10-04 23:26:29 · 102 阅读 · 0 评论 -
2021-10-03(dfs剪枝优化)
1118. 分成互质组给定 n 个正整数,将它们分组,使得每组中任意两个数互质。至少要分成多少个组?输入格式第一行是一个正整数 n。第二行是 n 个不大于10000的正整数。输出格式一个正整数,即最少需要的组数。数据范围1≤n≤10输入样例:614 20 33 117 143 175输出样例:3#include <bits/stdc++.h>using namespace std;const int N = 10;int n, a[N], ans = N,原创 2021-10-03 23:14:34 · 109 阅读 · 0 评论 -
【c++】dijkstra(朴素版、堆优化)spfa,floyd一题多解
1128. 信使战争时期,前线有 n 个哨所,每个哨所可能会与其他若干个哨所之间有通信联系。信使负责在哨所之间传递信息,当然,这是要花费一定时间的(以天为单位)。指挥部设在第一个哨所。当指挥部下达一个命令后,指挥部就派出若干个信使向与指挥部相连的哨所送信。当一个哨所接到信后,这个哨所内的信使们也以同样的方式向其他哨所送信。信在一个哨所内停留的时间可以忽略不计。直至所有 n 个哨所全部接到命令后,送信才算成功。因为准备充足,每个哨所内都安排了足够的信使(如果一个哨所与其他 k 个哨所有通信联系的原创 2021-10-03 00:06:29 · 138 阅读 · 0 评论 -
【c++】单词接龙(暴搜)
1117. 单词接龙单词接龙是一个与我们经常玩的成语接龙相类似的游戏。现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”,每个单词最多被使用两次。在两个单词相连时,其重合部分合为一部分,例如 beast 和 astonish ,如果接成一条龙则变为 beastonish。我们可以任意选择重合部分的长度,但其长度必须大于等于1,且严格小于两个串的长度,例如 at 和 atide 间不能相连。输入格式输入的第一行为一个单独的整数 n 表示单词数,以下 n 行每行有一个单词原创 2021-10-02 21:04:50 · 2274 阅读 · 0 评论 -
2021-10-01
1129. 热浪德克萨斯纯朴的民众们这个夏天正在遭受巨大的热浪!!!他们的德克萨斯长角牛吃起来不错,可是它们并不是很擅长生产富含奶油的乳制品。农夫John此时身先士卒地承担起向德克萨斯运送大量的营养冰凉的牛奶的重任,以减轻德克萨斯人忍受酷暑的痛苦。John已经研究过可以把牛奶从威斯康星运送到德克萨斯州的路线。这些路线包括起始点和终点一共有 T 个城镇,为了方便标号为 1 到 T。除了起点和终点外的每个城镇都由 双向道路 连向至少两个其它的城镇。每条道路有一个通过费用(包括油费,过路费等等)。原创 2021-10-02 09:32:51 · 94 阅读 · 0 评论 -
双向广搜,Astar.
190. 字串变换已知有两个字串 A, B 及一组字串变换的规则(至多 6 个规则):A1→B1A2→B2…规则的含义为:在 A 中的子串 A1 可以变换为 B1、A2 可以变换为 B2…。例如:A=abcd B=xyz变换规则为:abc → xu ud → y y → yz则此时,A 可以经过一系列的变换变为 B,其变换的过程为:abcd → xud → xy → xyz共进行了三次变换,使得 A 变换为 B。输入格式输入格式如下:A BA1 B1A2 B2… …第一原创 2021-09-30 00:10:31 · 159 阅读 · 0 评论 -
蒙德里安的梦想(状态压缩dp)
求把 N×M 的棋盘分割成若干个 1×2 的的长方形,有多少种方案。例如当 N=2,M=4 时,共有 5 种方案。当 N=2,M=3 时,共有 3 种方案。如下图所示:输入格式输入包含多组测试用例。每组测试用例占一行,包含两个整数 N 和 M。当输入用例 N=0,M=0 时,表示输入终止,且该用例无需处理。输出格式每个测试用例输出一个结果,每个结果占一行。数据范围1≤N,M≤11输入样例:1 21 31 42 22 32 42 114 110 0输出样例:1原创 2021-09-18 01:14:28 · 114 阅读 · 0 评论 -
DFS之连通性模型,最小步数模型
1112. 迷宫一天Extense在森林里探险的时候不小心走入了一个迷宫,迷宫可以看成是由 n∗n 的格点组成,每个格点只有2种状态,.和#,前者表示可以通行后者表示不能通行。同时当Extense处在某个格点时,他只能移动到东南西北(或者说上下左右)四个方向之一的相邻格点上,Extense想要从点A走到点B,问在不走出迷宫的情况下能不能办到。如果起点或者终点有一个不能通行(为#),则看成无法办到。注意:A、B不一定是两个不同的点。输入格式第1行是测试数据的组数 k,后面跟着 k 组输入。每组测原创 2021-09-17 00:18:40 · 138 阅读 · 0 评论 -
状态机模型(上)
1049. 大盗阿福阿福是一名经验丰富的大盗。趁着月黑风高,阿福打算今晚洗劫一条街上的店铺。这条街上一共有 N 家店铺,每家店中都有一些现金。阿福事先调查得知,只有当他同时洗劫了两家相邻的店铺时,街上的报警系统才会启动,然后警察就会蜂拥而至。作为一向谨慎作案的大盗,阿福不愿意冒着被警察追捕的风险行窃。他想知道,在不惊动警察的情况下,他今晚最多可以得到多少现金?输入格式输入的第一行是一个整数 T,表示一共有 T 组数据。接下来的每组数据,第一行是一个整数 N ,表示一共有 N 家店铺。第二行原创 2021-09-16 00:32:32 · 165 阅读 · 0 评论 -
最短路模型
1076. 迷宫问题给定一个 n×n 的二维数组,如下所示:int maze[5][5] = {0, 1, 0, 0, 0,0, 1, 0, 1, 0,0, 0, 0, 0, 0,0, 1, 1, 1, 0,0, 0, 0, 1, 0,};它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。数据保证至少存在一条从左上角走到右下角的路径。输入格式第一行包含整数 n。接下来 n 行,每行包含 n 个原创 2021-09-13 00:28:47 · 177 阅读 · 0 评论 -
Flood Fill
1097. 池塘计数农夫约翰有一片 N∗M 的矩形土地。最近,由于降雨的原因,部分土地被水淹没了。现在用一个字符矩阵来表示他的土地。每个单元格内,如果包含雨水,则用”W”表示,如果不含雨水,则用”.”表示。现在,约翰想知道他的土地中形成了多少片池塘。每组相连的积水单元格集合可以看作是一片池塘。每个单元格视为与其上、下、左、右、左上、右上、左下、右下八个邻近单元格相连。请你输出共有多少片池塘,即矩阵中共有多少片相连的”W”块。输入格式第一行包含两个整数 N 和 M。接下来 N 行,每行包原创 2021-09-12 14:20:09 · 119 阅读 · 0 评论 -
2021-09-10
1020. 潜水员潜水员为了潜水要使用特殊的装备。他有一个带2种气体的气缸:一个为氧气,一个为氮气。让潜水员下潜的深度需要各种数量的氧和氮。潜水员有一定数量的气缸。每个气缸都有重量和气体容量。潜水员为了完成他的工作需要特定数量的氧和氮。他完成工作所需气缸的总重的最低限度的是多少?例如:潜水员有5个气缸。每行三个数字为:氧,氮的(升)量和气缸的重量:3 36 12010 25 1295 50 2501 45 1304 20 119如果潜水员需要5升的氧和60升的氮则总重最小为249原创 2021-09-11 00:54:03 · 83 阅读 · 0 评论 -
混合背包(01,完全,多重二进制优化)
7. 混合背包问题有 N 种物品和一个容量是 V 的背包。物品一共有三类:第一类物品只能用1次(01背包);第二类物品可以用无限次(完全背包);第三类物品最多只能用 si 次(多重背包);每种体积是 vi,价值是 wi。求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品种数和背包容积。接下来有 N 行,每行三个整数 vi,wi,si,用空格隔开,分别表示第 i 种物品的体积、价值和数量。si=原创 2021-09-10 00:20:27 · 356 阅读 · 0 评论 -
2021-09-08
532. 货币系统在网友的国度中共有 n 种不同面额的货币,第 i 种货币的面额为 a[i],你可以假设每一种货币都有无穷多张。为了方便,我们把货币种数为 n、面额数组为 a[1…n] 的货币系统记作 (n,a)。在一个完善的货币系统中,每一个非负整数的金额 x 都应该可以被表示出,即对每一个非负整数 x,都存在 n 个非负整数 t[i] 满足 a[i]×t[i] 的和为 x。然而,在网友的国度中,货币系统可能是不完善的,即可能存在金额 x 不能被该货币系统表示出。例如在货币系统 n=3, a=[原创 2021-09-09 01:06:22 · 104 阅读 · 0 评论 -
2021-09-07
先膜拜彩色铅笔%%%1024装箱问题【01背包DP模型】有一个箱子容量为 V,同时有 n 个物品,每个物品有一个体积(正整数)。要求 n 个物品中,任取若干个装入箱内,使箱子的剩余空间为最小。输入格式第一行是一个整数 V,表示箱子容量。第二行是一个整数 n,表示物品数。接下来 n 行,每行一个正整数(不超过10000),分别表示这 n 个物品的各自体积。输出格式一个整数,表示箱子剩余空间。数据范围0<V≤20000,0<n≤30输入样例:24683127原创 2021-09-08 01:39:32 · 599 阅读 · 0 评论 -
.拦截导弹
1010. 拦截导弹某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000的正整数,导弹数不超过1000),计算这套系统最多能拦截多少导弹,如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。输入格式共一行,输入导弹依次飞来原创 2021-09-06 00:24:19 · 120 阅读 · 0 评论 -
2021-09-02(最长上升子序列dp)
1014. 登山五一到了,ACM队组织大家去登山观光,队员们发现山上一共有N个景点,并且决定按照顺序来浏览这些景点,即每次所浏览景点的编号都要大于前一个浏览景点的编号。同时队员们还有另一个登山习惯,就是不连续浏览海拔相同的两个景点,并且一旦开始下山,就不再向上走了。队员们希望在满足上面条件的同时,尽可能多的浏览景点,你能帮他们找出最多可能浏览的景点数么?输入格式第一行包含整数N,表示景点数量。第二行包含N个整数,表示每个景点的海拔。输出格式输出一个整数,表示最多能浏览的景点数。数据范围2原创 2021-09-02 22:49:48 · 192 阅读 · 0 评论 -
2021-09-01
1027. 方格取数设有 N×N 的方格图,我们在其中的某些方格中填入正整数,而其它的方格中则放入数字0。如下图所示:某人从图中的左上角 A 出发,可以向下行走,也可以向右行走,直到到达右下角的 B 点。在走过的路上,他可以取走方格中的数(取走后的方格中将变为数字0)。此人从 A 点到 B 点共走了两次,试找出两条这样的路径,使得取得的数字和为最大。输入格式第一行为一个整数N,表示 N×N 的方格图。接下来的每行有三个整数,第一个为行号数,第二个为列号数,第三个为在该行、该列上所放的数。行原创 2021-09-01 23:27:52 · 434 阅读 · 0 评论