04 2024 档案
摘要:原题链接:https://www.luogu.com.cn/problem/P1091 题意解读:要挑选一个最长的先上升后下降的序列,求其余的元素数量 解题思路: 先计算正向的最长上升子序列,设f[i]表示以i结尾的正向最长上升子序列长度 再计算逆向的最长上升子序列,设g[i]表示以i结尾的逆向最长
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1004 题意解读:从起点走到终点,走两次,计算最大路径和,第一次走过的点数值变为0。 解题思路: 直观上思考, 可以先从起点走到终点,计算最大路径和,并记录走过的所有点,然后把所有点的数值置为0, 再从起点走到终点,计算
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P2679 题意解读:在a中按顺序挑选k个子串,使得这些子串连在一起正好和b相等,求方案数。 解题思路: 这样的题目,无外乎两个思路:DFS暴搜(得部分分)、动态规划 动态规划不好想,还是先暴搜吧! 1、DFS暴搜 搜索的思
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1439 题意解读:求最长公共子序列的长度。 解题思路: 1、O(n^2)的方法:动态规划 设两个排列为a,b 设dp[i][j]表示a[1~i]与b[1~j]的最长公共子序列长度 根据公共子序列结尾是否不包含a[i]、b
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P2758 题意解读:对a字符串最少操作几次可以变成b字符串,看似无从下手,可以从内部递推关系着手。 解题思路: 设dp[i][j]表示将a字符串1~i变成b字符串1~j的最少操作次数,字符串下标从1开始。 如何思考递推?可
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1874 题意解读:一个数字字符串s,分解成几个整数,和为n,计算最少加号个数,也就是计算最少分解的整数个数-1。 解题思路:此题虽然分类在动态规划,但数据量不大,DFS更加直观和易于理解,所以采用DFS暴搜+剪枝来解决。
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P4933 题意解读:求有多少个子序列可以组成等差序列 解题思路: 1、暴力DFS 如果实在想不出动规的方法,对于n<=20的数据,可以DFS枚举所有子序列的子集,再判断是否是等差数列。 30分代码: #include <b
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1725 题意解读:走过一系列格子之后,冰冻指数之和最大,相当于计算最大子序列的和。 解题思路: 设a[0~n]保存所有冰冻指数 设dp[i]表示以第i号格子为终点所能获得的最大冰冻指数 设j表示i的前一个格子,也就是从j
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P2285 题意解读:计算在地鼠出现的时间内能打到的最多的地鼠数量。 解题思路: 由于地鼠按时间出现,打到的地鼠序列一定是时间递增的,可以联想到最长上升子序列模型。 不妨设dp[i]表示以第i个地鼠结束的最多地鼠数量 参考最
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1020 题意解读:拦截系统发射导弹的高度依次不增,计算能拦截的最大导弹数以及需要几套拦截系统。 解题思路: 问题1:最多能拦截多少导弹? 由于发射导弹高度不增,所以求一个最长不增子序列即可得到最大拦截数。 方法一、O(n
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1064 题意解读:用固定钱数购买最大价值的物品。 解题思路: 背包问题,背包问题里的体积相当于物品价格,价值相当于价格 * 重要度 物品分为主件、附件,主件最多有0/1/2个附件,要选附件必须选相应主件, 因此在递推计算
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P3842 题意解读:计算1-n的最短路,且每行要覆盖线段。 解题思路: 既然要每行覆盖线段,那往下一行走时,必然是从线段的端点往下,有可能是从左端点往下,也有可能是从右端点往下。 当已知第i行,从1走到第i行的左端点且要覆
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1077 题意解读:n种花选m个的选法,每种花数量为ai。 解题思路: 设dp[i][j]表示前i种花选j个的选法 对于第i种花,可以选0,1,2...min(ai, j)个 则有递推式:dp[i][j] = ∑dp[i-
阅读全文
摘要:参考:https://www.cnblogs.com/jcwy/p/18020487
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1616 题意解读:完全背包问题,时间可以当做背包体积。 解题思路:根据数据范围,m * t <= 10^7,可以用O(n^2)的算法,不能使用O(n^3),所以必须用一维dp 完全背包的一维代码和01背包基本类似,除了j
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1049 题意解读:装尽可能多的物品,使得总体积越大越好,即剩余空间最小,还是一个01背包问题,物品的体积就是其价值。 解题思路: 01背包模版题,物品体积、价值相同,直接采用一维dp。 100分代码: #include
阅读全文
摘要:参考:https://www.cnblogs.com/jcwy/p/18005991
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1802 题意解读:x个药取打n个怪,打赢打输都有经验,计算最大的经验数,跟01背包类似,可以理解为一个物品装得下或者装不下都可以装,装得下获得的价值高,装不下获得的价值低。 解题思路: 设lose[N], win[N],
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1115 题意解读:计算最大字段和,典型dp问题。 解题思路: 设a[]表示所有整数,f[i]表示以第i个数结束的最大字段和 当f[i-1]>=0时,f[i] = f[i-1] + a[i] 否则,f[i] = a[i]
阅读全文
摘要:参考:https://www.cnblogs.com/jcwy/p/18101493
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1434 题意解读:计算能滑行的最长距离。 解题思路: 设dp(i, j)表示从i,j可以滑行的最大距离 对于4个方向i,j可以到达的点,ni,nj,如果可以滑过去(ni,ni所在点高度更低) 则dp(i, j) = ma
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P2196 题意解读:求一条路径,使得所有点地雷数之和最大。 解题思路: 1、DFS 先建图,再从1~n点分别进行一次DFS,记录过程中地雷总数最大的,并且同时记录遍历的顺序。数据量不大,直接就可以过。 100分代码: #i
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1048 题意解读:在有限的时间内,采集到最大价值的草药,实际上是01背包问题,这里的总时间就是背包的体积。 解题思路: 设v[]表示每株草药的时间, w[]表示每株草药的价值, dp[i][j]表示采前i株草药在时间j内
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1216 题意解读:计算数字三角形最高点到最后一行路径之和最大值,典型线性DP。 解题思路: 设a[i][j]表示数字三角形的值, 设dp[i][j]表示从最高点到第i行第j列路径之和的最大值, 由于每一步可以走到左下方的
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1593 题意解读:计算a^b的因子和。 解题思路: 1、如何计算因子和 我们知道,对于一个整数x,分解质因数后x = p1a1*p2a2*...*pnan 其所有因子和可以表示为(p10+p11+p12+...+p1a1
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1403 题意解读:计算1~n每个数的约数个数之和。 解题思路: 1、数学方法 1~n的约数范围也在1~n,要计算每个数的约数个数之和 可以从约数出发, 比如约数是x,那么在1~n中一共有n/x个数包含x这个约数 x从1一
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P3601 题意解读:求l~r范围内所有qiandao(x) 之和,qiandao(x)为小于等于x的数中,与x不互质的数的个数。注意取模。 解题思路: 欧拉函数定义:phi(x) = x * (1-1/p1) * (1-1
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P2660 题意解读:对一个长方形,切割出最少数量的正方形,计算所有正方形的边长。 解题思路: 长方形长、宽为x,y 先判断x,y哪个长,哪个短 长的作为l,短的作为s 先切出s * s的正方形,一共可以切出l / s个,累
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P2651 题意解读:计算能否在除法a1/a2/a3/.../an式子中加括号,将一部分数变成分子,使得除法结果是整数。 解题思路: 在a1/a2/a3/.../an中,无论怎么加括号,a1一定是分子,a2一
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1414 题意解读:有n个数,从其中选k个数,k=1, 2, 3......n,使得这k个数的gcd最大。 解题思路: 如何求k个数的最大公约数呢?暴力法肯定不行。 可以从1到n枚举这个最大公约数i,看是否有>=k个数的因
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P4057 题意解读:给定三个数,计算其最小公倍数。 解题思路: 三个数a、b、c lcm(a, b, c) = lcm(lcm(a, b), c) 100分代码: #include <bits/stdc++.h> usin
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1572 题意解读:计算分数+、-运算的结果。 解题思路: 根据题目要求,逐项计算并约分,则不会超int,问题就比较直接了 定义a1/b1为前一项的分子分母,a2/b2为当前项的分子分母 依次遍历字符串,处理出分子和分母,
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1069 题意解读:一个数s代表细胞经过一天分裂的个数,则经过t天后个数为st,要计算经过几天后能整除m1m2,也就是st % m1m2 == 0,有多个s,要计算天数最少就可以满足条件的。 解题思路: 直接求st % m
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1072 题意解读:求有多少个x,满足x和a0 的最大公约数是a1,x和b0的最小公倍数是b1,多组数据。 解题思路: 枚举法: 因为x和a0 的最大公约数是a1,x和b0的最小公倍数是b1,所以x不大于b1
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1029 题意解读:已知x,y,求有多少对p、q,使得p、q的最大公约数为x,最小公倍数为y。 解题思路: 枚举法即可。 枚举的对象:枚举p,且p必须是x的倍数,还有p <= y q的计算:q = x * y / p, q
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1835 题意解读:要计算L-R范围内素数的个数。 解题思路: 直接对L~R的每个数判断素数肯定不可取,因为L、R的范围较大。 既然要计算素数的个数,那么可以把其中的合数标记出来即可。 如何标记合数? 可以借助于筛素数的算
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P3383 题意解读:素数筛模版题。 解题思路: 素数筛介绍 所谓素数(质数),是指除了1和它本身以外不再有其他因数的自然数,一般用试除法判断素数(时间复杂度:O(sqrt(n))): bool isprime(int x)
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P2926 题意解读:有n个数,计算每个数能整除其他数的个数。 解题思路: a[100005]记录所有的数,h[1000005]记录所有数的个数,cnt[1000005]记录所有数能整除其他数的个数 只需要读入a数组,同时更
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1246 题意解读:对于26个小写字母按字典序排列,不超过6个字母,给定一个排列,计算在第几个。 解题思路: 1、组合数 1个字母的情况:一共有C(26, 1) = 26种组合 2个字母的情况:一共有C(26, 2) =
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P2638 题意解读:把a个红球、b个黑球放入n个盒子,求所有的方法。 解题思路: 盒子中可以放也可以不放,可以放任意个,因此,题目可以转化为将i个红球(0<=i<=a),j个黑球(0<=j<=b)放入n个盒子的方案数之和,
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P3913 题意解读:车所在的行、列一共有多个个格子。 解题思路: 假设3*3的棋盘,有三个车 分析得知,三个车覆盖了第1、2两行,第2、3两列,覆盖的格子数用公式计算就是2 * 3 + 2 * 3 - 2 * 2 = 8
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P2789 题意解读:n条直线可以形成不同交点数的方案数。 解题思路: 对于n = 1、2、3、4的情况进行模拟: n = 1时,有1种不同的交点数 n = 2时,有2种不同的交点数 n = 3时,有3种不同的交点数 n =
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P2822 题意解读:本质上是要计算所有组合数C(i,j),0≤i≤n,0≤j≤min(i,m),统计有多少个C(i,j)能整除k。 解题思路: 本题要解决两个问题: 1、 计算C(0~n、0~m)范围内所有的组合数,只用保
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1866 题意解读:N个整数M1~Mn,对每个整数Mi,选取1~Mi之间的一个数,使得N个数都不一样的选法。 解题思路: 将M1~Mn由小到大排序, 第1个的选法有M1种 第2个的选法有M2-1种 第3个的选法有M3-2种
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1017 题意解读:负进制数的转换。 解题思路: 下面给出两种思路 1、枚举法 从数据范围来看,∣n∣ ≤ 37336,因此,可以对该r进制的数进行枚举,每一次枚举,都计算r进制数对应的十进制数是否和n相等,相等则输出该r
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1100 题意解读:将32位二进制数的高低16位交换位置。 解题思路: 给定无符号整数a,假设二进制高16为h,低16位为l, 即a表示为hl,a >> 16得到0h,a << 16得到l0,两者相加即得到lh,交换完毕。
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1469 题意解读:找到落单的整数,其他整数都可以配对。 解题思路: 利用异或的特性: 1、整数和自己异或 x ^ x = 0 2、任何数和0异或 x ^ 0 = x 因此,将所有数异或起来,结果就是落单的整数。 100分
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1143 题意解读:进制转换的模版题,n进制转10进制,10进制转m进制。 解题思路: 1、对于n进制数转10进制,如abcd转10进制,根据定义是a*n^3 + b*n^2 + c*n + d,在程序中迭代处理: for
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1983 题意解读:由于“如果这趟车次停靠了火车站x,则始发站、终点站之间所有级别大于等于火车站x的都必须停靠”。因此,在始发站和终点站之间,能停靠的车站都是级别较高的,没有停靠的车站都是级别较低的,计算最少有多少个不同级
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1347 题意解读:在给出多对关系字母的比较关系之后,判断能否确定所有字母的顺序。 解题思路: 对字母的关系建立图,如A<B建立A指向B的一条边。 如果在拓扑排序过程中,每次寻找入度为0的点只有一个,且最终可以形成拓扑序,
阅读全文
摘要:原题链接: 题意解读:迷宫可以无限扩展,对第一个样例进行模拟,扩展4块的示意图: 从起点S,沿着红色虚线,是可以无限走下去的,要判断是否能够无限走下去。 解题思路: 直观上,会考虑把迷宫复制多块,但是会面临2个问题: 1、内存可能爆掉 2、如何有效判断可以无限走下去?只考虑竖向或者横向连通是不够的,
阅读全文