随笔分类 -  dp

摘要:题意:给定一个序列a,求最长的连续子序列b的长度,在至多修改b内一个数字(可修改为任何数字)的条件下,使得b严格递增。 分析: 1、因为至多修改一个数字,假设修改a[i], 2、若能使a[i] < a[i + 1] 且 a[i] > a[i - 1],则修改a[i]能得到的最长连续子序列长度为l[i 阅读全文
posted @ 2017-02-24 12:33 Somnuspoppy 阅读(225) 评论(0) 推荐(0)
摘要:题意:有一个n(n<=1000)位密码锁,每位都是0~9,可以循环旋转。每次可以让1~3个相邻数字同时往上或者往下转一格。输入初始状态和终止状态(长度不超过1000),问最少要转几次。 分析: 1、从左往右依次使各个数字与终止状态相同。 2、dp[cur][x1][x2][x3]表示当前研究数字为第 阅读全文
posted @ 2017-02-23 08:14 Somnuspoppy 阅读(308) 评论(0) 推荐(0)
摘要:题意:给出一个由大写字母组成的长度为n(1<=n<=100)的串,“折叠”成一个尽量短的串。折叠可以嵌套。多解时可输出任意解。 分析: 1、dp[l][r]为l~r区间可折叠成的最短串的长度。 2、ans[l][r]为l~r区间可折叠成的最短串。 3、先判断当前研究的串是否能折叠,若不能折叠,再枚举 阅读全文
posted @ 2017-02-22 23:33 Somnuspoppy 阅读(137) 评论(0) 推荐(0)
摘要:题意:有一个n行m列(1<=n, m<=20)的网格蛋糕上有一些樱桃。每次可以用一刀沿着网格线把蛋糕切成两块,并且只能够直切不能拐弯。要求最后每一块蛋糕上恰好有一个樱桃,且切割线总长度最小。 分析:dp[up][down][left][right]表示上下左右界分别为up,down,left,rig 阅读全文
posted @ 2017-02-22 21:38 Somnuspoppy 阅读(244) 评论(0) 推荐(0)
摘要:题意:桌上有4堆糖果,每堆有N(N<=40)颗。佳佳有一个最多可以装5颗糖的小篮子。他每次选择一堆糖果,把最顶上的一颗拿到篮子里。如果篮子里有两颗颜色相同的糖果,佳佳就把它们从篮子里拿出来放到自己的口袋里。如果篮子满了而里面又没有相同颜色的糖果,游戏结束,口袋里的糖果就归他了。问最多能拿到多少对糖果 阅读全文
posted @ 2017-02-22 20:43 Somnuspoppy 阅读(325) 评论(0) 推荐(0)
摘要:题意:在一个R*C(R, C<=100)的整数矩阵上找一条高度严格递减的最长路。起点任意,但每次只能沿着上下左右4个方向之一走一格,并且不能走出矩阵外。矩阵中的数均为0~100。 分析:dp[x][y]为从位置(x,y)出发的最长路。 阅读全文
posted @ 2017-02-21 22:02 Somnuspoppy 阅读(316) 评论(0) 推荐(0)
摘要:题意:某公司有1个老板和n(n<=105)个员工组成树状结构,除了老板之外每个员工都有唯一的直属上司。老板的编号为0,员工编号为1~n。无下属的员工(叶子)打算签署一项请愿书递给老板,但不能跨级递,只能递给直属上司。当一个中级员工(非叶子)的直属下属中不小于T%的人签字时,他也会签字并且递给他的直属 阅读全文
posted @ 2017-02-21 21:13 Somnuspoppy 阅读(274) 评论(0) 推荐(0)
摘要:题意:有一根长度为L(L<1000)的棍子,还有n(n < 50)个切割点的位置(按照从小到大排列)。你的任务是在这些切割点的位置处把棍子切成n+1部分,使得总切割费用最小。每次切割的费用等于被切割的木棍长度。 分析: 1、solve(i, j)为切割小木棍i~j的最优费用。 2、设k(i<k<j) 阅读全文
posted @ 2017-02-21 10:45 Somnuspoppy 阅读(400) 评论(0) 推荐(0)
摘要:题意:输入一个由小写字母组成的字符串,你的任务是把它划分成尽量少的回文串,字符串长度不超过1000。 分析: 1、dp[i]为字符0~i划分成的最小回文串的个数。 2、dp[j] = Min(dp[j], dp[i - 1] + 1),若i~j是回文串,则更新dp[j]。 阅读全文
posted @ 2017-02-19 22:19 Somnuspoppy 阅读(411) 评论(0) 推荐(0)
摘要:题意:共有n种(n<=1000)种灯泡,每种灯泡用4个数值表示。电压V(V<=132000),电源费用K(K<=1000),每个灯泡的费用C(C<=10)和所需灯泡的数量L(1<=L<=100)。把一些灯泡换成电压更高的另一种灯泡以节省电源的钱(不能换成电压更低的灯泡)。计算出最优方案费用。 分析: 阅读全文
posted @ 2017-02-18 12:08 Somnuspoppy 阅读(303) 评论(0) 推荐(0)
摘要:题意:在KTV唱歌剩下的t秒时间内,决定选最爱的n首歌中的一部分歌,在时间结束之前唱一首时长678秒的《劲歌金曲》,使得唱的总曲目尽量多(包括《劲歌金曲》),在此前提下尽量晚的离开KTV。(n<=50,t<=109) 分析: 1、输入保证所有n+1首曲子总长度严格大于t,虽然,t<=109,实际上t 阅读全文
posted @ 2017-02-18 11:10 Somnuspoppy 阅读(276) 评论(0) 推荐(0)
摘要:题意:给一个m行n列(m<=10, n<=100)的整数矩阵,从第一列任何一个位置出发每次往右,右上或右下走一格,最终到达最后一列。要求经过的整数之和最小。第一行的上一行是最后一行,最后一行的下一行是第一行。输出路径上每列的行号。多解时输出字典序最小的。 分析: 1、dp[i][j] 从第i行第j列 阅读全文
posted @ 2017-02-15 17:42 Somnuspoppy 阅读(212) 评论(0) 推荐(0)
摘要:题意:有n个牛肉堡和n个鸡肉堡给2n个孩子吃。每个孩子在吃之前都要抛硬币,正面吃牛肉堡,反面吃鸡肉堡。如果剩下的所有汉堡都一样,则不用抛硬币。求最后两个孩子吃到相同汉堡的概率。 分析: 1、先求最后两个孩子吃到不同汉堡的概率。 2、dp[i]表示2i个人的情况。 3、dp[i + 1] = (2 * 阅读全文
posted @ 2017-02-12 16:38 Somnuspoppy 阅读(281) 评论(0) 推荐(0)
摘要:题意:输入n(n <=1000),统计有多少个n结点的有根树,使得每个深度中所有结点的子结点数相同。输出数目除以109+7的余数。 分析: 1、dp[i],i个结点的有根树个数 2、假设n=7,则根结点之外有6个结点。 根的子树有四种情况: (1)6个结点数为1的子树 (2)3个结点数为2的子树 ( 阅读全文
posted @ 2017-02-12 16:18 Somnuspoppy 阅读(440) 评论(0) 推荐(0)
摘要:题意:选择k个质数,使它们的和等于n,问有多少种方案。 分析:dp[i][j],选择j个质数,使它们的和等于i的方法数。 阅读全文
posted @ 2017-02-12 13:10 Somnuspoppy 阅读(223) 评论(0) 推荐(0)
摘要:题意:找到[a, b]符合下列要求的数的个数。 1、该数字能被m整除 2、该数字奇数位全不为d,偶数位全为d 分析: 1、dp[当前的位数][截止到当前位所形成的数对m取余的结果][当前数位上的数字是否到达了上限] 2、对于第三维的上限,例如一个数字是54362,那么如果前四位是5436,那么前四位 阅读全文
posted @ 2016-11-08 14:52 Somnuspoppy 阅读(288) 评论(0) 推荐(0)
摘要:题意:已知原串(长度为1~1000),它由多个单词组成,每个单词除了首尾字母,其余字母为乱序,且句子中无空格。给定n个互不相同的单词(1 <= n <= 10000),问是否能用这n个单词还原出这个句子。 eg: 分析: 1、将原串从头到尾遍历,分别以原串中的每个字母为基础,查找是否有以该字母为尾字 阅读全文
posted @ 2016-11-04 16:52 Somnuspoppy 阅读(222) 评论(0) 推荐(0)
摘要:题意:已知有n个城市,某歌手每月进行一场演唱会,共持续c个月,可连续两个月在同一个城市。城市间的路费已给出,且已知每个城市在第k(1<=k<=c)个月举办演唱会的所得利润,求最终的最大利润。 分析:第i个月在第j个城市举办演唱会,最终可得最大利润,由此可得状态转移方程:dp[i][j] = max( 阅读全文
posted @ 2016-09-20 15:36 Somnuspoppy 阅读(262) 评论(0) 推荐(0)