关于《算法竞赛进阶指南》动态规划的笔记
文章平均质量分 76
zyc_3
我很懒
展开
-
树状DP(算法竞赛进阶指南)
树状模板:上司的舞会选课学校实行学分制。每门的必修课都有固定的学分,同时还必须获得相应的选修课程学分。学校开设了 N 门的选修课程,每个学生可选课程的数量 M 是给定的。学生选修了这 M 门课并考核通过就能获得相应的学分。在选修课程中,有些课程可以直接选修,有些课程需要一定的基础知识,必须在选了其他的一些课程的基础上才能选修。例如《Windows程序设计》必须在选修了《Windows操作基础》之后才能选修。我们称《Windows操作基础》是《Windows程序设计》的先修..原创 2022-05-08 21:31:33 · 384 阅读 · 1 评论 -
观光之旅(算法竞赛进阶指南)
给定一张无向图,求图中一个至少包含 3 个点的环,环上的节点不重复,并且环上的边的长度之和最小。该问题称为无向图的最小环问题。你需要输出最小环的方案,若最小环不唯一,输出任意一个均可。输入格式第一行包含两个整数 N 和 M,表示无向图有 N 个点,M 条边。接下来 M 行,每行包含三个整数 u,v,l,表示点 u 和点 v 之间有一条边,边长为 l。输出格式输出占一行,包含最小环的所有节点(按顺序输出),如果不存在则输出 No solution.。数据范围1≤N≤100,原创 2022-05-03 15:51:24 · 485 阅读 · 0 评论 -
排序(算法竞赛进阶指南)
给定 n 个变量和 m 个不等式。其中 n 小于等于 26,变量分别用前 n 的大写英文字母表示。不等式之间具有传递性,即若 A>B 且 B>C,则 A>C。请从前往后遍历每对关系,每次遍历时判断:如果能够确定全部关系且无矛盾,则结束循环,输出确定的次序;如果发生矛盾,则结束循环,输出有矛盾;如果循环结束时没有发生上述两种情况,则输出无定解。输入格式输入包含多组测试数据。每组测试数据,第一行包含两个整数 n 和 m。接下来 m 行,每行包含一个不等式,不原创 2022-05-03 14:49:23 · 229 阅读 · 1 评论 -
道路与航线(算法竞赛进阶指南)
农夫约翰正在一个新的销售区域对他的牛奶销售方案进行调查。他想把牛奶送到 T 个城镇,编号为 1∼T。这些城镇之间通过 R 条道路 (编号为 1 到 R) 和 P 条航线 (编号为 1 到 P) 连接。每条道路 i 或者航线 i 连接城镇 Ai 到 Bi,花费为 Ci。对于道路,0≤Ci≤10,000;然而航线的花费很神奇,花费 Ci 可能是负数(−10,000≤Ci≤10,000)。道路是双向的,可以从 Ai 到 Bi,也可以从 Bi 到 Ai,花费都是 Ci。然而航线与之不同,只可原创 2022-05-03 11:13:08 · 426 阅读 · 0 评论 -
最优贸易(算法竞赛进阶指南)
C 国有 n 个大城市和 m 条道路,每条道路连接这 n 个城市中的某两个城市。任意两个城市之间最多只有一条道路直接相连。这 m 条道路中有一部分为单向通行的道路,一部分为双向通行的道路,双向通行的道路在统计条数时也计为 1 条。C 国幅员辽阔,各地的资源分布情况各不相同,这就导致了同一种商品在不同城市的价格不一定相同。但是,同一种商品在同一个城市的买入价和卖出价始终是相同的。商人阿龙来到 C 国旅游。当他得知“同一种商品在不同城市的价格可能会不同”这一信息之后,便决定在旅游的同时.原创 2022-05-02 22:39:25 · 245 阅读 · 0 评论 -
acwing 340.通信线路
在郊区有 N 座通信基站,P 条 双向 电缆,第 i 条电缆连接基站 Ai 和 Bi。特别地,1 号基站是通信公司的总站,N 号基站位于一座农场中。现在,农场主希望对通信线路进行升级,其中升级第 i 条电缆需要花费 Li。电话公司正在举行优惠活动。农产主可以指定一条从 1 号基站到 N 号基站的路径,并指定路径上不超过 K 条电缆,由电话公司免费提供升级服务。农场主只需要支付在该路径上剩余的电缆中,升级价格最贵的那条电缆的花费即可。求至少用多少钱可以完成升级。输入格式第 1原创 2022-04-30 09:34:05 · 179 阅读 · 0 评论 -
金字塔(算法竞赛进阶指南)
虽然探索金字塔是极其老套的剧情,但是有一队探险家还是到了某金字塔脚下。经过多年的研究,科学家对这座金字塔的内部结构已经有所了解。首先,金字塔由若干房间组成,房间之间连有通道。如果把房间看作节点,通道看作边的话,整个金字塔呈现一个有根树结构,节点的子树之间有序,金字塔有唯一的一个入口通向树根。并且,每个房间的墙壁都涂有若干种颜色的一种。探险队员打算进一步了解金字塔的结构,为此,他们使用了一种特殊设计的机器人。这种机器人会从入口进入金字塔,之后对金字塔进行深度优先遍历。机器人每进入一原创 2022-04-30 07:32:54 · 905 阅读 · 0 评论 -
多边形(算法竞赛进阶指南)
“多边形游戏”是一款单人益智游戏。游戏开始时,给定玩家一个具有 N 个顶点 N 条边(编号 1∼N)的多边形,如图 1 所示,其中 N=4。每个顶点上写有一个整数,每个边上标有一个运算符 +(加号)或运算符 *(乘号)。第一步,玩家选择一条边,将它删除。接下来在进行 N−1 步,在每一步中,玩家选择一条边,把这条边以及该边连接的两个顶点用一个新的顶点代替,新顶点上的整数值等于删去的两个顶点上的数按照删去的边上标有的符号进行计算得到的结果。下面是用图 1 给出的四边形进行游戏的全过程。原创 2022-04-24 17:25:57 · 334 阅读 · 0 评论 -
石子合并(算法竞赛进阶指南)
设有 N 堆石子排成一排,其编号为 1,2,3,…,N。每堆石子有一定的质量,可以用一个整数来描述,现在要将这 N 堆石子合并成为一堆。每次只能合并相邻的两堆,合并的代价为这两堆石子的质量之和,合并后与这两堆石子相邻的石子将和新堆相邻,合并时由于选择的顺序不同,合并的总代价也不相同。例如有 4 堆石子分别为 1 3 5 2, 我们可以先合并 1、2 堆,代价为 4,得到 4 5 2, 又合并 1,2 堆,代价为 9,得到 9 2 ,再合并得到 11,总代价为 4+9+11=24;如果第二步是原创 2022-04-24 16:37:41 · 227 阅读 · 0 评论 -
陪审团(算法竞赛进阶指南)
详见AcWing 280. 陪审团 - AcWing在一个遥远的国家,一名嫌疑犯是否有罪需要由陪审团来决定。陪审团是由法官从公民中挑选的。法官先随机挑选 N 个人(编号 1,2…,N)作为陪审团的候选人,然后再从这 N 个人中按照下列方法选出 M 人组成陪审团。首先,参与诉讼的控方和辩方会给所有候选人打分,分值在 0 到 20 之间。第 i 个人的得分分别记为 p[i] 和 d[i]。为了公平起见,法官选出的 M 个人必须满足:辩方总分 D 和控方总分 P 的差的绝对值 |D−P|原创 2022-04-23 21:21:15 · 255 阅读 · 0 评论 -
自然数的拆分(背包)
给定一个自然数 N,要求把 N 拆分成若干个正整数相加的形式,参与加法运算的数可以重复。注意:拆分方案不考虑顺序;至少拆分成 2 个数的和。求拆分的方案数 mod2147483648 的结果。输入格式一个自然数 N。输出格式输入一个整数,表示结果。数据范围1≤N≤4000输入样例:7输出样例:14从背包的角度来看:体积为v的背包,体积分别为1~n -1的物品。状态确立:f[j],体积为j的背包的方案数初始化:f[0] = 1;状态转移:原创 2022-04-23 20:44:22 · 337 阅读 · 0 评论 -
数字组合(算法竞赛进阶指南)
278. 数字组合 - AcWing题库给定 N 个正整数 A1,A2,…,AN,从中选出若干个数,使它们的和为 M,求有多少种选择方案。输入格式第一行包含两个整数 N 和 M。第二行包含 N 个整数,表示 A1,A2,…,AN。输出格式包含一个整数,表示可选方案数。数据范围1≤N≤100,1≤M≤10000,1≤Ai≤1000,答案保证在 int 范围内。输入样例:4 41 1 2 2输出样例:31.把题意理解成在一个体积为M的背包里,放原创 2022-04-23 20:31:56 · 775 阅读 · 0 评论 -
饼干(算法竞赛进阶指南)
圣诞老人共有 M 个饼干,准备全部分给 N 个孩子。每个孩子有一个贪婪度,第 i 个孩子的贪婪度为 g[i]。如果有 a[i] 个孩子拿到的饼干数比第 i 个孩子多,那么第 i 个孩子会产生 g[i]×a[i] 的怨气。给定 N、M 和序列 g,圣诞老人请你帮他安排一种分配方式,使得每个孩子至少分到一块饼干,并且所有孩子的怨气总和最小。输入格式第一行包含两个整数 N,M。第二行包含 N 个整数表示 g1∼gN。输出格式第一行一个整数表示最小怨气总和。第二行 N 个空格隔开原创 2022-04-23 17:22:31 · 464 阅读 · 0 评论 -
传纸条(算法竞赛进阶指南)
275. 传纸条 - AcWing题库小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题。一次素质拓展活动中,班上同学安排坐成一个 m 行 n 列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法直接交谈了。幸运的是,他们可以通过传纸条来进行交流。纸条要经由许多同学传到对方手里,小渊坐在矩阵的左上角,坐标 (1,1),小轩坐在矩阵的右下角,坐标 (m,n)。从小渊传到小轩的纸条只可以向下或者向右传递,从小轩传给小渊的纸条只可以向上或者向左传递。 在活动进行中,小渊原创 2022-04-23 16:23:44 · 163 阅读 · 0 评论 -
移动服务(算法竞赛进阶指南)
一个公司有三个移动服务员,最初分别在位置 1,2,3 处。如果某个位置(用一个整数表示)有一个请求,那么公司必须指派某名员工赶到那个地方去。某一时刻只有一个员工能移动,且不允许在同样的位置出现两个员工。从 p 到 q 移动一个员工,需要花费 c(p,q)。这个函数不一定对称,但保证 c(p,p)=0。给出 N 个请求,请求发生的位置分别为 p1∼pN。公司必须按顺序依次满足所有请求,且过程中不能去其他额外的位置,目标是最小化公司花费,请你帮忙计算这个最小花费。输入格式第 1原创 2022-04-23 15:38:50 · 156 阅读 · 0 评论 -
分级(算法竞赛进阶指南)
题目:273. 分级 - AcWing题库输入样例:71324539输出样例:3样例:1334559这道题就是让我们找到一个不严格单调递增或递减的数列使得它与原题给出的数列(偏差)更小那么显然存在一个原则:如果在构建B序列中不可避免地产生了与A序列的冲突,比如说样例中1 3 2 4,我们创造的 1 3 3 4.如果在第K个数上出现了冲突,这个数必然比我们创造的第K - 1个数要小,为了减少偏差,我们只能让它和第K -1个数相等来维护数列单调。如果是不严格单..原创 2022-04-23 11:23:59 · 154 阅读 · 0 评论 -
关于《算法竞赛进阶指南》动态规划的笔记
1.AcWing 271. 杨老师的照相排列271. 杨老师的照相排列 - AcWing题库这道题最重要的是想到开一个f[a][b][c][d][e](注意数据范围)为什么要开一个五维的呢?因为每一行的信息是无法压缩到一起(我不会这样的技巧),而且我们(蒟蒻)一般的认为三行就是f[a][b][c],这是一个很自然的想法,然而当我问自己f[a][b][c]和f[a][b][c][0][0]有什么区别后,我无法回答。所以这道题给我的一个教训是做DP要从全局想共同点(统一的状态来表示),再分布想每个状态如原创 2022-04-22 23:14:06 · 245 阅读 · 0 评论