![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
dp
文章平均质量分 52
_Rikka_
- v -
展开
-
蓝桥杯国赛——质数拆分(01背包)
题目描述2019可以被分解成若干个两两不同的素数,请问不同的分解方案有多少种?注意:分解方案不考虑顺序,如 2 + 2017 = 2019 和 2017 + 2 = 2019 属于同一种方案。答案:55965365465060思路先用筛法求出质数数组,然后将本题转化成01背包来解,每个质数只可用一次,看其组合相加最终能产生多少个2019。Code:#include <iostream>#include<map>using namespace std;typedef原创 2021-06-03 19:47:32 · 785 阅读 · 3 评论 -
蓝桥杯国赛--游园安排
问题描述L 星球游乐园非常有趣,吸引着各个星球的游客前来游玩。小蓝是 L 星球游乐园的管理员,为了更好的管理游乐园,游乐园要求所有的游客提前预约,小蓝能看到系统上所有预约游客的名字。每个游客的名字由一个大写英文字母开始,后面跟 0 0 0 个或多个小写英文字母,游客可能重名。小蓝特别喜欢递增的事物。今天,他决定在所有预约的游客中,选择一部分游客在上午游玩,其他的游客都在下午游玩,在上午游玩的游客要求按照预约的顺序排列后,名字是单调递增的,即排在前面的名字严格小于排在后面的名字。一个名字 A A原创 2021-06-02 21:19:30 · 330 阅读 · 1 评论 -
蓝桥杯国赛---质数行者(3维dp)
【问题描述】小蓝在玩一个叫质数行者的游戏。游戏在一个 n×m×w 的立体方格图上进行,从北到南依次标号为第 1 行到第 n 行,从西到东依次标号为第 1 列到第 m 列,从下到上依次标号为第 1 层到第 w 层。小蓝要控制自己的角色从第 1 行第 1 列第 1 层移动到第 n 行第 m 列第 w层。每一步,他可以向东走质数格、向南走质数格或者向上走质数格。每走到一个位置,小蓝的角色要稍作停留。在游戏中有两个陷阱,分别为第 r 1 行第 c 1 列第 h 1 层和第 r 2 行第 c 2 列第h2原创 2021-05-31 22:27:12 · 1969 阅读 · 5 评论 -
蓝桥国赛--本质上升序列(dp)
【问题描述】小蓝特别喜欢单调递增的事物。在一个字符串中,如果取出若干个字符,将这些字符按照在字符串中的顺序排列后是单调递增的,则成为这个字符串中的一个单调递增子序列。例如,在字符串 lanqiao 中,如果取出字符 n 和 q,则 nq 组成一个单调递增子序列。类似的单调递增子序列还有 lnq、i、ano 等等。小蓝发现,有些子序列虽然位置不同,但是字符序列是一样的,例如取第二个字符和最后一个字符可以取到 ao,取最后两个字符也可以取到 ao。小蓝认为他们并没有本质不同。对于一个字符串,小蓝想知道原创 2021-05-25 13:19:05 · 190 阅读 · 1 评论 -
蓝桥杯--砝码称重(dp)
砝码称重题目评测你有一架天平和 N 个砝码,这 N 个砝码重量依次是 W1,W2,⋅⋅⋅,WN。请你计算一共可以称出多少种不同的正整数重量?注意砝码可以放在天平两边。输入格式输入的第一行包含一个整数 N。第二行包含 N个整数:W1,W2,W3,⋅⋅⋅,WN输出格式输出一个整数代表答案。数据范围对于 50%的评测用例,1≤N≤15。对于所有评测用例,1≤N≤100,N 个砝码总重不超过 1e5。思路很容易想到是dp,但需要注意的是对于负数的称重如何处理。dp[i][j]代表原创 2021-05-25 12:54:30 · 10104 阅读 · 5 评论 -
蓝桥杯 包子凑数(完全背包、裴蜀定理)
思路:根据裴蜀定理,当所有种类的蒸笼包子数的最大公约数不为1时,凑不出的包子数为无限多,因为无论蒸笼怎么组合都必须得是gcd得倍数,gcd不为1一定会有凑不出的。如果能够凑的出的有限,那么到达某个界限后都是凑得出的,这个界限为Ai*Ai=10000,或许会有人问为啥是这个数,这个具体证明我也搞不出,但可以模拟一下你取任意两个互质的数,如6,7,会发现42之后任意一个数都是可以通过6,7组合出来,姑且就当个结论记了八。然后就是对凑不出的数的一个求解,这个可以通过完全背包解决。dp[i] 表示凑出i个包子.原创 2021-04-13 23:59:59 · 1023 阅读 · 0 评论 -
C. Two Arrays (dp、思维)
题目a[i][j] 表示前i个数字中第i个数字为j的所有情况的非递减序列的数目b[i][j] 表示前i个数字中第i个数字为j的所有情况的非递增序列的数目对于非递减数列aa,和非递增数列bb,只要第一个元素满足aa[1]>=bb[1]整个数列就满足aa中个元素>=bb中对应元素了。那么只需枚举a中第一个元素所有可能与之相对应满足条件的b中第一个元素即可。另:递增序列第一个数字为j的所有情况=递减序列最后一个数字为j的所有情况 ,递减序列同理Code#include<iostre原创 2021-03-06 02:00:57 · 133 阅读 · 0 评论 -
C. The Hard Work of Paparazzi (dp)
题目思路:这是一道最长递增子序列的变式。dp[i] 代表前i个名人中第i个名人被访问所能访问的最大名人数目先看暴力的方法,那么我们直接遍历前面所有情况当abs(x[i]-x[j])+abs(y[i]-y[j])<=t[i]-t[j] i<j 时dp[i]=max(dp[i],dp[j]+1)但这时时间复杂度O(n^2) 会超时,我们需要优化一下这时我们发现最大的距离不会超过2r-2,而对于每个名人出场的时间是递增的,也就是说一旦出场的名人相隔超过2r-2位那么他们相隔时间也超过原创 2021-02-17 12:02:00 · 182 阅读 · 0 评论 -
F. Zero Remainder Sum(四维dp)
题目状态:dp[i][j][k][o] 代表第i行前j个数已经选定k个数余o最大总和的值首先来单独看一行,lst[i][j] 代表第i行第j个数dp[i][j][k][o]=dp[i][j-1][k][o] , 此代表在第i行我们不选第j个数,所以选定的个数k不变,余数也不变dp[i][j][k][o]=dp[i][j-1][k-1][(o-lst[i][j]+70p)%p] ,此代表第i行选择了第j个数,所以由选定数k-1转换而来,p是题目要求余的数,o-lst[i][j]表示,要想得到加了l原创 2021-02-17 10:31:07 · 227 阅读 · 0 评论