随笔分类 -  DP

摘要:传送门 分析 我们通过仔细研究不难发现对于一次交换(i,i+1)的操作之后,在i之前的点就不可能跑到i之后,i+1之后的的点也不可能跑到i+1之前,所以这个序列在一次交换之后就相当于被分成了两个部分。于是我们设dp[n][low]表示对于一个长度为n的最小值为low的序列的构成方案数。于是我们可以求 阅读全文
posted @ 2018-09-21 19:23 水题收割者 阅读(238) 评论(0) 推荐(0)
摘要:传送门 分析 考试的时候sb了......我们发现可以按照先序遍历将一棵树变成一个序列,而不需要删的数的数量便是最长上升子序列的长度,但是还有一个问题就是如果在5和7之间有3个空的位置就无法填入合法的数,但是按照此方法会将5和7划归为合法的。所以我们考虑将第i个数的权值变为原来的权值减去i,然后求一 阅读全文
posted @ 2018-09-16 22:41 水题收割者 阅读(235) 评论(0) 推荐(0)
摘要:传送门 分析 考场上想到了先枚举p的长度,在枚举这个长度的所有子串,期望得分40~50pts,但是最终只得了20pts,这是因为我写的代码在验证中总是不断删除s'中的第一个p,而这种方式不能解决形如ababaa的字符串。于是我们考虑满分做法。设dp[i][j]表示在当前的p的情况下s的[i,j]位置 阅读全文
posted @ 2018-09-01 13:31 水题收割者 阅读(140) 评论(0) 推荐(0)
摘要:传送门 分析 一道简单的树型dp,我们用dp[i][j]记录考虑到第i个点,保留了j个树枝的最多苹果数,然后dfs求解即可。 代码 阅读全文
posted @ 2018-08-22 20:42 水题收割者 阅读(138) 评论(0) 推荐(0)
摘要:传送门 题目大意 定义n-magic为从左往右,偶数位置均为n,奇数位置不为n的一类数。求出[a,b]内所有可被m整除的d-magic个数。 分析 显然是数位dp,我们用dp[i][j][k]表示考虑到第i位,小于还是等于范围,对m取模的余数为k的时候的个数,然后我们枚举所有满足情况的j(i为奇数则 阅读全文
posted @ 2018-08-17 16:36 水题收割者 阅读(143) 评论(0) 推荐(0)
摘要:传送门 分析 首先这是一个询问一段区间内的个数的问题,所以我们可以用差分的思想用sum(R)-sum(L-1)。然后我们考虑如何求出sum(n),我们用dp[i][j][k][t]表示考虑到第i位,最后一个数是j,是否已经小于n和是否已经考虑完前导零。至于转移和一般的套路一样,详见代码。注意最后记得 阅读全文
posted @ 2018-08-17 09:43 水题收割者 阅读(149) 评论(0) 推荐(0)
摘要:传送门 题目大意 给你一棵树,可以染m种颜色,现定义一种特殊的颜色K,一棵树上最多能有x个特殊颜色。如果一个节点为特殊颜色,那么他相邻的节点的值只能选比K小的颜色,问一共有多少种染色方案。 分析 不难想出这是一个树型dp,用dp[i][j][k]表示考虑第i个点所选的颜色的种类为j,共用了k个特殊颜 阅读全文
posted @ 2018-08-16 21:33 水题收割者 阅读(273) 评论(0) 推荐(0)
摘要:传送门 题目大意 有n个人n*m张牌,每个人分m张牌。每个人有一个自己喜欢的数值,如果他的牌中有x张数值等于这个值则他的高兴度为L[x],求怎样分配牌可以使得所有人的总高兴度最大。 分析 我们发现每一个人只有他喜欢的值对他有影响。所以我们统计出喜欢值x的人有多少和有多少值为x的牌,对于每一个x设dp 阅读全文
posted @ 2018-08-16 09:54 水题收割者 阅读(225) 评论(0) 推荐(0)
摘要:传送门 题目大意 有n本书,最多k次操作,每次操作可以把一本书拿出来,放到一个位置去,有一个指标较mess度,他是书的高度的段数,连续的书高度一样算一段,现在给你最先开始各个位置上的书的高度,求操作后最小的mess度。 分析 首先我们要注意一个非常非常重要的条件就是书的高度的范围很小。所以我们不由想 阅读全文
posted @ 2018-08-15 20:26 水题收割者 阅读(349) 评论(0) 推荐(0)
摘要:传送门 题目大意 有n个带有颜色的方块,没消除一段长度为x的连续的相同颜色的方块可以得到x^2的分数,让你用一种最优的顺序消除所有方块使得得分最多。 分析 首先不难看出这是一个区间dp,于是我们考虑如何设计状态。我们设dp[i][j][k]表示考虑区间[i,j],从j往后有k个方块和第j个颜色是相同 阅读全文
posted @ 2018-08-15 11:11 水题收割者 阅读(157) 评论(0) 推荐(0)
摘要:传送门 题目大意 有一个大区间和n个小区间,每个小区间都有一个代价,求最少付出多少代价可以使得小区间完全覆盖大区间。 分析为了方便起见我们先将s变为2,其它的位置都对应更改以便后期处理。我们考虑以t1为第一关键字,t2为第二关键字将所有奶牛排序。用dp[i][j]表示考虑到第i只牛,覆盖到点j最少需 阅读全文
posted @ 2018-08-14 17:43 水题收割者 阅读(260) 评论(0) 推荐(0)
摘要:传送门 题目大意 给你一些书的高度和宽度,有一个一列三行书柜,要求放进去书后,三行书柜的高的和乘以书柜的宽度最小。问这个值最小是多少。 分析 我们可以先将所有书按照高度降序排好,这样对于每一层只要放过书高度边不会改变。我们设第一本书放在第一层,用dp[i][j][k]表示考虑到第i个,第二层的厚度为 阅读全文
posted @ 2018-08-14 13:26 水题收割者 阅读(194) 评论(0) 推荐(0)
摘要:传送门 题目大意 给你m个机器,n个数,每个机器可以给n个数的某一段排序,求最少使用几个机器,保证可以把这个n个数排好序 分析 我们可以想到dpij表示考虑前i个机器让最大的数到达点j至少需要使用多少个机器,转移为: dp[i][j]=min{dp[i][j],dp[i-1][j'](s[i]<=j 阅读全文
posted @ 2018-08-13 07:59 水题收割者 阅读(260) 评论(0) 推荐(0)
摘要:传送门 题目大意 有n个方块,有1,2,3,4四种颜色对其进行染色,求1,2颜色的方块个数均为偶数的方案数对10007取模的值。 分析 我们假设1表示这个颜色个数是奇数,0表示是偶数,所以对于所有状态我们可以分为四种,每种对应一个二元组 ,二元组的第一项表示颜色1,第二项表示颜色2,这四种分别是(1 阅读全文
posted @ 2018-08-12 18:59 水题收割者 阅读(257) 评论(0) 推荐(0)
摘要:看来我还是太菜了,这么一道破题做了那么长时间...... 传送门 分析 我首先想到的是用状压dp来转移每一个人是否放走的状态,但是发现复杂度远远不够。于是我们考虑区间dp,dpij表示i到j区间的所有罪犯全部放走的最小花费,于是我们可以将一个区间(i,j)分为(i,k-1),(k+1,j)和k这个点 阅读全文
posted @ 2018-08-12 11:02 水题收割者 阅读(185) 评论(0) 推荐(0)
摘要:传送门 题目大意 有2*n个位置,这些位置有的已经填上了数,有的还没有(用?表示),现在让你在还没有填上数的填0~9中的任意数,使得前n个数的乘积等于后n个数的乘积,问有多少种方案。 分析 首先这个题 并没有取模,所以我们要使用高精度。在这个题中我为了加速,将朴素的高精度变成了5个long long 阅读全文
posted @ 2018-08-08 08:53 水题收割者 阅读(346) 评论(0) 推荐(0)
摘要:传送门 题目大意 给你一个n点m条边的有向图,q次询问,给定s,t,k,求由s到t至少经过k条边的最短路。 分析 我们设dp[i][j][k]为从i到j至少经过k条边的最短路,sp[i][j]意为从i到j只经过一条边的最短路,于是我们可以得到转移方程式:dp[i][k]=Min{dp[i][m][k 阅读全文
posted @ 2018-07-31 08:52 水题收割者 阅读(384) 评论(0) 推荐(1)
摘要:传送门 题目大意 有m+1个点,0是起点,m是终点,i-1到i有一条边,有一个船由0驶往m,不能返回,它在载重小于等于ci时通过第i条边消耗的时间为di否则为Di,现在有n个人,每个人体重为wi,上船或下船消耗时间为si,如果自己走则通过每一条边消耗的实际均为ti,要求船上必须一直有人,求所有人到终 阅读全文
posted @ 2018-07-29 11:47 水题收割者 阅读(223) 评论(0) 推荐(0)
摘要:传送门 题目大意 给定两个数n,p;表示n个点中任意两点连边的概率为p,求生成的图是个连通块的概率 分析 我们发现直接求产生联通块的概率并不容易,于是我们转而考虑计算不能生成联通块的概率,公式如下: 代码 阅读全文
posted @ 2018-07-21 13:14 水题收割者 阅读(233) 评论(0) 推荐(0)
摘要:传送门 题目大意 给你一个包含n 个单词的字典,给你一篇文章,文章包括若干词典里的单词,把句子里的空格都去掉,单词的首位字母都不变,中间的字符集为乱序,问能否恢复这篇文章,使得单词都是词典里的单词,如果有唯一解,输出唯一解。 分析 可以将将一段字符串哈希来确定这段字符串的字母组成,在记录每一段的首字 阅读全文
posted @ 2018-07-21 12:57 水题收割者 阅读(189) 评论(0) 推荐(0)