随笔分类 - 基础dp
摘要:题意略。 思路:有一点区间dp的意思。 我令dp[ i ][ j ]表示:区间[1 , i]和区间[j , N]按某种顺序插值排好,所能获得的最大值。 状态转移方程:dp[ i ][ j ] = max(dp[i - 1][ j ] + v[ i ] * (i + N - j + 1) , dp[
阅读全文
摘要:题意略。 思路: 很有意思的一个题,我采用的是主动更新未知点的方式,也即刷表法来dp。 我们可以把整个路径划分成横向移动和纵向移动,题目一开始就给出了Jimmy的高度,这就是纵向移动的距离。 我们dp的目标是每个线段端点的横向移动最小值。 有一个小trick,就是有可能Jimmy开始就可以落在地上,
阅读全文
摘要:题意略。 思路: 这个题目开始我本来打算用个二维dp,令dp[ i ][ j ]为考虑前i个人,有j个名额的时候,我所能获取的最小差,后来发现不好转移。因为dp[ i ][ j ]有可能是+2, 也有可能是-2,这两种值对我以后的求解可能都有用。后来想再添加一维,dp[ i ][ j ][ 0 ]表
阅读全文
摘要:题意略。 思路: 由求出最小修改字符个数可知,这应该是一个dp,当长度为i + 1的串想利用上长度为i的串的时候,我们是需要知道前几个字符的,以防出现错误基因串。 然而我们得到的长度为i的合法字符串不知道会被改成什么样子,所以我们可以给它分个类,假设它以这些错误基因串的前缀结尾的话, 应该有sum(
阅读全文
摘要:题意略。 思路: 开始的时候,定义dp[i]:当前行在第i行,i~n有多少种排列方式,如果i为f,那么dp[i] = dp[i + 1],因为第i + 1条语句只能放在f后且向右缩进一位; 如果i为s,那么dp[i]还与第i行的缩进有关。因此我们增加缩进这个状态。 定义dp[i][j]:当前行在第i
阅读全文
摘要:题意略。 思路: 本题开始我先写了一发dfs暴力,然而递归程度太深,导致爆栈。仔细回想一下dfs的过程,发现最不好处理的就是每收集到3个木棍,才能构成一个三角形。 并且,还有一个隐患就是不能完全枚举出来木棍的组合情况。那么我们可以预先把木棍的组合情况枚举出来,按照题意,不会超过220种现在我们就是
阅读全文
摘要:题意略。 思路: 这个题目开始想的有点暴力,后来发现有搜索的性质,因此转而用动态规划。首先,我们要把这些数排个序。 定义状态:dp[i]为排序后i~n能否成功打包,1表示可以,0表示不能打包。 状态转移方程:dp[i] = max{dp[j]} (i + k <= j <= upper)upper为
阅读全文
摘要:题意略。 这个题目我开始题意理解得有点问题。本题的实质是在这个数列中选择一些数字,使得选出的这些数字之和最大,用dp来解。 我们先要明确:当我选择数列长度为2 * c时,不如把这个长度为2 * c的劈成两个c,这样对答案的贡献更大一些。 定义dp[i]为我在[i,n]中可谋取的最大贡献。 dp[i]
阅读全文
摘要:题目为中文,题意略。 这个题目我开始用贪心做bfs两次,这样做是错的,因为两次局部的最优解并不能得出全局的最优解,以下面样例说明: 3 0 10 -1 10 10 10 1 0 10 第一次贪心后: 0 10 -1 0 0 0 1 0 0 第二次贪心后: 0 0 -1 0 0 0 1 0 0 这样贪
阅读全文
摘要:题意略。 本题考查动态规划,顺便考查一下优化。 这个题目可以归约到最长递增子序列那一类,定义状态:dp[i][j] 当前以第i个数结尾,前一个数是第j个数的最长序列。 if(a[i] == a[k]) dp[i][j] = dp[j][k] + 1; 这里不用再去枚举k了,因为从小到大枚举j时可以顺
阅读全文
摘要:题意略。 思路:有n * (n - 1) / 2这么多边,要枚举是不可能的,感觉和数据结构也沾不上边。再加上树上染色,以一条边上不同颜色作为这个边的值,这看起来像是算贡献那种题,和17icpc沈阳的某题有点像。 那么,我们要枚举每个边不行,不如就假设所有边上都有全部颜色,然后再减去sum(wi)[w
阅读全文
摘要:题意:有n个程序员,要协作写完m行代码,最多出现b个bug,第i个程序员每写一行代码就会产生a[i]个bug,现在问,这n个人合作来写完这m行代码,有几种方案使得出的bug总数不超过b(题中要求总方案数要对一个特定的数取模)? 分析: 这道题目属于dp中的计数类型,即求出方案数。一般来说,为了求出方
阅读全文
摘要:状态压缩dp的第一题! 题意:Mr ACMer想要进行一次旅行,他决定访问n座城市。Mr ACMer 可以从任意城市出发,必须访问所有的城市至少一次,并且任何一个城市访问的次数不能超过2次。n座城市间有m条道路,每条道路都有一个费用。求Mr ACMer 完成旅行需要花费的最小费用。如果不能完成旅行,
阅读全文
摘要:题意:你要从[1,n]这个n个数中猜出来规定的某个数,现在这个数未知,问你在最糟糕的情况下(但是你采用了最优的策略),你要猜多少次才能猜出这个数。现在有两种条件: 第一种:当你猜的数比指定的那个数小的时候,系统会提示你small; 第二种:当你猜的数比指定的那个数大的时候,系统会提示你wrong,但
阅读全文
摘要:这是CCPC女生专场的一道dp题。大佬们都说它简单,我并没有感到它有多简单。 先说一下题意:在一条直线上,有n个教室,现在我要在这些教室里从左到右地建设一些作为糖果屋,每个教室都有自己的坐标xi 和建造糖果屋的费用ci , 如果在这里建造一个糖果屋,那么花费ci ,如果不建造糖果屋,则花费是当前教室
阅读全文
摘要:这是紫书上的第一个dp哈。 1.状态定义:dp[i][j] >到时刻i的时候(出发的时候时刻为0,约定时间为时刻time),从j号车站开往N号车站,在车站等待的最少的时间。 2.这个人当前的策略: α.在车站等待一个单位的时间(该站此时没有发车时应该这么做) β.坐上开往左边的火车 γ.坐上开往右边
阅读全文

浙公网安备 33010602011771号