AcWing Enhanced Course
文章平均质量分 90
记录 AcWing 算法提高课学习过程与笔记
柃歌
夏天的海边有冰淇淋口味的海风
展开
-
【算法题归纳合集】基础算法-位运算、递推与递归
一、AcWing 90. 64位整数乘法【题目描述】求aaa乘bbb对ppp取模的值。【输入格式】第一行输入整数aaa,第二行输入整数bbb,第三行输入整数ppp。【输出格式】输出一个整数,表示a∗b mod pa*b\ mod\ pa∗b mod p的值。【数据范围】1≤a,b,p≤10181≤a,b,p≤10^{18}1≤a,b,p≤1018【输入样例】345【输出样例】2【分析】直接乘会爆精度,将aaa加bbb次会爆时间,因原创 2022-02-22 16:37:45 · 534 阅读 · 0 评论 -
【算法题归纳合集】高级数据结构-线段树
一、AcWing 1275. 最大数【题目描述】给定一个正整数数列a1,a2,…,ana_1,a_2,\dots ,a_na1,a2,…,an,每一个数都在0∼p−10∼p−10∼p−1之间。可以对这列数进行两种操作:添加操作:向序列后添加一个数,序列长度变成n+1n+1n+1;询问操作:询问这个序列中最后LLL个数中最大的数是多少。程序运行的最开始,整数序列为空。一共要对整数序列进行mmm次操作。写一个程序,读入操作的序列,并输出询问操作的答案。【输入格式第一行有两个正整数m原创 2022-01-19 14:57:06 · 750 阅读 · 0 评论 -
【算法题归纳合集】高级数据结构-树状数组
一、AcWing 241. 楼兰图腾【题目描述】在完成了分配任务之后,西部314来到了楼兰古城的西部。相传很久以前这片土地上(比楼兰古城还早)生活着两个部落,一个部落崇拜尖刀(V),一个部落崇拜铁锹(∧),他们分别用V和∧的形状来代表各自部落的图腾。西部314在楼兰古城的下面发现了一幅巨大的壁画,壁画上被标记出了nnn个点,经测量发现这nnn个点的水平位置和竖直位置是两两不同的。西部314认为这幅壁画所包含的信息与这nnn个点的相对位置有关,因此不妨设坐标分别为(1,y1),(2,y2),…,(n原创 2022-01-14 11:43:42 · 370 阅读 · 0 评论 -
【算法题归纳合集】高级数据结构-并查集
一、AcWing 1250. 格子游戏【题目描述】Alice和Bob玩了一个古老的游戏:首先画一个n×nn×nn×n的点阵(下图n=3n=3n=3)。接着,他们两个轮流在相邻的点之间画上红边和蓝边:直到围成一个封闭的圈(面积不必为111)为止,“封圈”的那个人就是赢家。因为棋盘实在是太大了,他们的游戏实在是太长了!他们甚至在游戏中都不知道谁赢得了游戏。于是请你写一个程序,帮助他们计算他们是否结束了游戏?【输入格式】输入数据第一行为两个整数nnn和mmm。nnn表示点阵的大小,mmm表示一共原创 2022-01-13 10:56:49 · 461 阅读 · 0 评论 -
【算法题归纳合集】图论-有向图的强连通分量
一、AcWing 1174. 受欢迎的牛【题目描述】每一头牛的愿望就是变成一头最受欢迎的牛。现在有NNN头牛,编号从1∼N1\sim N1∼N,给你MMM对整数(A,B)(A,B)(A,B),表示牛AAA认为牛BBB受欢迎。这种关系是具有传递性的,如果AAA认为BBB受欢迎,BBB认为CCC受欢迎,那么牛AAA也认为牛CCC受欢迎。你的任务是求出有多少头牛被除自己之外的所有牛认为是受欢迎的。【输入格式】第一行两个数N,MN,MN,M;接下来MMM行,每行两个数A,BA,BA,B,意思是AAA原创 2022-03-23 17:39:48 · 1605 阅读 · 0 评论 -
【算法题归纳合集】图论-最近公共祖先
一、AcWing 1172. 祖孙询问【题目描述】给定一棵包含nnn个节点的有根无向树,节点编号互不相同,但不一定是1∼n1\sim n1∼n。有mmm个询问,每个询问给出了一对节点的编号xxx和yyy,询问xxx与yyy的祖孙关系。【输入格式】输入第一行包括一个整数nnn表示节点个数;接下来nnn行每行一对整数aaa和bbb,表示aaa和bbb之间有一条无向边。如果bbb是−1-1−1,那么aaa就是树的根;第n+2n+2n+2行是一个整数mmm表示询问个数;接下来mmm行,每行两个不同的原创 2022-02-20 11:47:59 · 433 阅读 · 0 评论 -
【算法题归纳合集】图论-差分约束
差分约束的应用讲解可以跳转至:差分约束算法原理与应用一、AcWing 1169. 糖果【题目描述】幼儿园里有NNN个小朋友,老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果。但是小朋友们也有嫉妒心,总是会提出一些要求,比如小明不希望小红分到的糖果比他的多,于是在分配糖果的时候,老师需要满足小朋友们的KKK个要求。幼儿园的糖果总是有限的,老师想知道他至少需要准备多少个糖果,才能使得每个小朋友都能够分到糖果,并且满足小朋友们所有的要求。【输入格式】输入的第一行是两个整数N,KN,KN原创 2022-02-11 10:47:59 · 528 阅读 · 0 评论 -
【算法题归纳合集】图论-SPFA找负环
一、AcWing 904. 虫洞【题目描述】农夫约翰在巡视他的众多农场时,发现了很多令人惊叹的虫洞。虫洞非常奇特,它可以看作是一条单向路径,通过它可以使你回到过去的某个时刻(相对于你进入虫洞之前)。农夫约翰的每个农场中包含NNN片田地,MMM条路径(双向)以及WWW个虫洞。现在农夫约翰希望能够从农场中的某片田地出发,经过一些路径和虫洞回到过去,并在他的出发时刻之前赶到他的出发地。他希望能够看到出发之前的自己。请你判断一下约翰能否做到这一点。下面我们将给你提供约翰拥有的农场数量FFF,以及每个原创 2022-02-08 21:37:25 · 1019 阅读 · 0 评论 -
【算法题归纳合集】图论-最小生成树的扩展应用
一、AcWing 1146. 新的开始(虚拟源点)【题目描述】发展采矿业当然首先得有矿井,小FF花了上次探险获得的千分之一的财富请人在岛上挖了nnn口矿井,但他似乎忘记了考虑矿井供电问题。为了保证电力的供应,小FF想到了两种办法:在矿井iii上建立一个发电站,费用为viv_ivi(发电站的输出功率可以供给任意多个矿井)。将这口矿井iii与另外的已经有电力供应的矿井jjj之间建立电网,费用为pi,jp_{i,j}pi,j。小FF希望你帮他想出一个保证所有矿井电力供应的最小花费方案。【输入原创 2022-02-06 10:34:01 · 1024 阅读 · 0 评论 -
【算法题归纳合集】图论-最小生成树的典型应用
一、AcWing 1140. 最短网络【题目描述】农夫约翰被选为他们镇的镇长!他其中一个竞选承诺就是在镇上建立起互联网,并连接到所有的农场。约翰已经给他的农场安排了一条高速的网络线路,他想把这条线路共享给其他农场。约翰的农场的编号是111,其他农场的编号是2∼n2∼n2∼n。为了使花费最少,他希望用于连接所有的农场的光纤总长度尽可能短。你将得到一份各农场之间连接距离的列表,你必须找出能连接所有农场并使所用光纤最短的方案。【输入格式】第一行包含一个整数nnn,表示农场个数。接下来nnn行,原创 2022-02-05 11:25:55 · 948 阅读 · 0 评论 -
【算法题归纳合集】图论-Floyd算法及其扩展应用
一、AcWing 1125. 牛的旅行【题目描述】农民John的农场里有很多牧区,有的路径连接一些特定的牧区。一片所有连通的牧区称为一个牧场。但是就目前而言,你能看到至少有两个牧区不连通。现在,John想在农场里添加一条路径(注意,恰好一条)。一个牧场的直径就是牧场中最远的两个牧区的距离(本题中所提到的所有距离指的都是最短的距离)。考虑如下的两个牧场,每一个牧区都有自己的坐标:图111是有555个牧区的牧场,牧区用*表示,路径用直线表示。图111所示的牧场的直径大约是12.0710612原创 2022-01-12 10:46:25 · 843 阅读 · 0 评论 -
【算法题归纳合集】图论-单源最短路的扩展应用
一、AcWing 1137. 选择最佳线路(虚拟源点)【题目描述】有一天,琪琪想乘坐公交车去拜访她的一位朋友。由于琪琪非常容易晕车,所以她想尽快到达朋友家。现在给定你一张城市交通路线图,上面包含城市的公交站台以及公交线路的具体分布。已知城市中共包含nnn个车站(编号1∼n1\sim n1∼n)以及mmm条公交线路。每条公交线路都是单向的,从一个车站出发直接到达另一个车站,两个车站之间可能存在多条公交线路。琪琪的朋友住在sss号车站附近。琪琪可以在任何车站选择换乘其它公共汽车。请找出琪琪到达原创 2021-11-19 23:20:04 · 544 阅读 · 0 评论 -
【算法题归纳合集】图论-单源最短路的综合应用
一、AcWing 1135. 新年好(最短路+搜索)【题目描述】重庆城里有nnn个车站,mmm条双向公路连接其中的某些车站。每两个车站最多用一条公路连接,从任何一个车站出发都可以经过一条或者多条公路到达其他车站,但不同的路径需要花费的时间可能不同。在一条路径上花费的时间等于路径上所有公路需要的时间之和。佳佳的家在车站111,他有五个亲戚,分别住在车站a,b,c,d,ea,b,c,d,ea,b,c,d,e。过年了,他需要从自己的家出发,拜访每个亲戚(顺序任意),给他们送去节日的祝福。怎样走,才需原创 2021-11-18 15:54:18 · 788 阅读 · 0 评论 -
【算法题归纳合集】图论-单源最短路的建图方式
前言对于图论的题目,代码重复的现象尤为明显,即模板代码的部分占比特别大。因此很多图论的难点并不在算法代码实现本身,而在于对题目信息的抽象能力与建图能力(因为图论题的题目描述往往都是又臭又长的),因此如何根据题意建出相应的图的能力是十分重要的。一、AcWing 1129. 热浪【题目描述】John已经研究过可以把牛奶从威斯康星运送到德克萨斯州的路线。这些路线包括起始点和终点一共有TTT个城镇,为了方便标号为111到TTT。除了起点和终点外的每个城镇都由双向道路连向至少两个其它的城镇。每条道路有一原创 2021-11-02 17:48:51 · 336 阅读 · 1 评论 -
【算法题归纳合集】搜索-DFS之剪枝与优化
一、AcWing 165. 小猫爬山【题目描述】翰翰和达达饲养了NNN只小猫,这天,小猫们要去爬山。经历了千辛万苦,小猫们终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了(呜咕>_<)。翰翰和达达只好花钱让它们坐索道下山。索道上的缆车最大承重量为WWW,而NNN只小猫的重量分别是C1,C2,…,CNC_1,C_2,\dots ,C_NC1,C2,…,CN。当然,每辆缆车上的小猫的重量之和不能超过WWW。每租用一辆缆车,翰翰和达达就要付111美元,所以他们想知道,最少需要付多原创 2022-02-23 15:42:56 · 815 阅读 · 0 评论 -
【算法题归纳合集】搜索-DFS之搜索顺序
一、AcWing 1116. 马走日二、AcWing 1117. 单词接龙三、AcWing 1118. 分成互质组原创 2022-01-24 22:05:54 · 257 阅读 · 0 评论 -
【算法题归纳合集】搜索-DFS之连通性模型
一、AcWing 1112. 迷宫【题目描述】一天Extense在森林里探险的时候不小心走入了一个迷宫,迷宫可以看成是由n∗nn∗nn∗n的格点组成,每个格点只有222种状态,.和#,前者表示可以通行后者表示不能通行。同时当Extense处在某个格点时,他只能移动到东南西北(或者说上下左右)四个方向之一的相邻格点上,Extense想要从点AAA走到点BBB,问在不走出迷宫的情况下能不能办到。如果起点或者终点有一个不能通行(为#),则看成无法办到。注意:A,BA,BA,B不一定是两个不同的点。【输原创 2022-01-23 22:36:33 · 395 阅读 · 0 评论 -
【算法题归纳合集】搜索-A*
一、AcWing 179. 八数码【题目描述】在一个3×33×33×3的网格中,1∼81∼81∼8这888个数字和一个xxx恰好不重不漏地分布在这3×33×33×3的网格中。例如:1 2 3x 4 67 5 8在游戏过程中,可以把xxx与其上、下、左、右四个方向之一的数字交换(如果存在)。我们的目的是通过交换,使得网格变为如下排列(称为正确排列):1 2 34 5 67 8 x例如,示例中图形就可以通过让xxx先后与右、下、右三个方向的数字交换成功得到正确排列。交换过程如下:原创 2021-11-01 22:02:22 · 330 阅读 · 0 评论 -
【算法题归纳合集】搜索-双向广搜
一、AcWing 190. 字串变换【题目描述】已知有两个字串A,BA, BA,B及一组字串变换的规则(至多666个规则):A1→B1A_1→B_1A1→B1A2→B2A_2→B_2A2→B2…\dots…规则的含义为:在AAA中的子串A1A_1A1可以变换为B1B_1B1、A2A_2A2可以变换为B2…B_2\dotsB2…例如:A=A=A=abcd,B=B=B=xyz。变换规则为:abc→→→xu、ud→→→y、y→→→yz。则此时,AAA可以经过一系列的变换变为BB原创 2021-11-01 18:10:04 · 205 阅读 · 0 评论 -
【算法题归纳合集】搜索-双端队列广搜
一、AcWing 175. 电路维修【题目描述】电路板的整体结构是一个RRR行CCC列的网格(R,C≤500)(R,C≤500)(R,C≤500),如下图所示。每个格点都是电线的接点,每个格子都包含一个电子元件。电子元件的主要部分是一个可旋转的、连接一条对角线上的两个接点的短电缆。在旋转之后,它就可以连接另一条对角线的两个接点。电路板左上角的接点接入直流电源,右下角的接点接入飞行车的发动装置。达达发现因为某些元件的方向不小心发生了改变,电路板可能处于断路的状态。她准备通过计算,旋转最少数量原创 2021-11-01 17:57:46 · 210 阅读 · 0 评论 -
【算法题归纳合集】搜索-最小步数模型
前言最小步数模型与最短路模型不一样,最短路模型是指在一个固定的状态下从某个点转移到另一个点的最小步数;而最小步数模型是指从某个状态转变为另一个状态的最小步数。一、AcWing 1107. 魔板【题目描述】Rubik先生在发明了风靡全球的魔方之后,又发明了它的二维版本——魔板。这是一张有888个大小相同的格子的魔板:1 2 3 48 7 6 5我们知道魔板的每一个方格都有一种颜色。这888种颜色用前888个正整数来表示。可以用颜色的序列来表示一种魔板状态,规定从魔板的左上角开始,沿顺时针原创 2021-10-29 17:07:46 · 325 阅读 · 0 评论 -
【算法题归纳合集】搜索-多源BFS
一、AcWing 173. 矩阵距离【题目描述】给定一个NNN行MMM列的010101矩阵AAA,A[i][j]A[i][j]A[i][j]与A[k][l]A[k][l]A[k][l]之间的曼哈顿距离定义为:dist(A[i][j],A[k][l])=∣i−k∣+∣j−l∣dist(A[i][j],A[k][l])=|i−k|+|j−l|dist(A[i][j],A[k][l])=∣i−k∣+∣j−l∣输出一个NNN行MMM列的整数矩阵BBB,其中:B[i][j]=min1≤x≤N,1≤y≤M,A原创 2021-10-29 14:51:26 · 162 阅读 · 0 评论 -
【算法题归纳合集】搜索-最短路模型
一、AcWing 1076. 迷宫问题【题目描述】给定一个由0,10,10,1组成的n×nn×nn×n的二维数组。它表示一个迷宫,111表示墙壁,000表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。数据保证至少存在一条从左上角走到右下角的路径。【输入格式】第一行包含整数nnn。接下来nnn行,每行包含nnn个整数000或111,表示迷宫。【输出格式】输出从左上角到右下角的最短路线,如果答案不唯一,输出任意一条路径均可。按顺序,每行输出一个路径中原创 2021-10-29 13:39:49 · 197 阅读 · 0 评论 -
【算法题归纳合集】搜索-Flood Fill
一、AcWing 1097. 池塘计数【题目描述】农夫约翰有一片N∗MN*MN∗M的矩形土地。最近,由于降雨的原因,部分土地被水淹没了。现在用一个字符矩阵来表示他的土地。每个单元格内,如果包含雨水,则用W表示,如果不含雨水,则用.表示。现在,约翰想知道他的土地中形成了多少片池塘。每组相连的积水单元格集合可以看作是一片池塘。每个单元格视为与其上、下、左、右、左上、右上、左下、右下八个邻近单元格相连。请你输出共有多少片池塘,即矩阵中共有多少片相连的W块。【输入格式】第一行包含两个整数NNN原创 2021-10-28 22:24:28 · 190 阅读 · 0 评论 -
【算法题归纳合集】动态规划-背包模型(2)
一、AcWing 12. 背包问题求具体方案【题目描述】有NNN件物品和一个容量是VVV的背包。每件物品只能使用一次。第iii件物品的体积是viv_ivi,价值是wiw_iwi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出字典序最小的方案。这里的字典序是指:所选物品的编号所构成的序列。物品的编号范围是1∼N1\sim N1∼N。【输入格式】第一行两个整数N,VN,VN,V,用空格隔开,分别表示物品数量和背包容积。接下来有NNN行,每行两个整数vi,wiv原创 2022-03-21 17:17:17 · 1124 阅读 · 0 评论 -
【算法题归纳合集】动态规划-背包模型(1)
一、AcWing 6. 多重背包问题 III【题目描述】有NNN种物品和一个容量是VVV的背包。第iii种物品最多有sis_isi件,每件体积是viv_ivi,价值是wiw_iwi。求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。输出最大价值。【输入格式】第一行两个整数,N,V(0<N≤1000,0<V≤20000)N,V(0<N≤1000,0<V≤20000)N,V(0<N≤1000,0<V≤20000),用空格隔开,分别表示原创 2022-03-20 13:59:31 · 1231 阅读 · 0 评论 -
【算法题归纳合集】动态规划-最长上升子序列模型
前言最长上升子序列模型(LIS)(LIS)(LIS)属于线性DP的一种,基础模板题讲解传送门:【模板题】线性DP(数字三角形、LIS、LCS、编辑距离),本文将通过一系列该模型的扩展题对其进行更加深入的分析。一、AcWing 1017. 怪盗基德的滑翔翼二、AcWing 1014. 登山三、AcWing 482. 合唱队形四、AcWing 1012. 友好城市五、AcWing 1016. 最大上升子序列和六、AcWing 1010. 拦截导弹七、AcWing 187. 导弹防御系统八、Ac原创 2021-10-27 20:50:10 · 412 阅读 · 0 评论 -
【算法题归纳合集】动态规划-数字三角形模型
一、AcWing 1015. 摘花生【题目描述】Hello Kitty想摘点花生送给她喜欢的米老鼠。她来到一片有网格状道路的矩形花生地(如下图),从西北角进去,东南角出来。地里每个道路的交叉点上都有种着一株花生苗,上面有若干颗花生,经过一株花生苗就能摘走该它上面所有的花生。Hello Kitty只能向东或向南走,不能向西或向北走。问Hello Kitty最多能够摘到多少颗花生。【输入格式】第一行是一个整数TTT,代表一共有多少组数据。接下来是TTT组数据。每组数据的第一行是两个整数,分原创 2021-10-27 17:44:12 · 215 阅读 · 0 评论