导航

随笔分类 -  dp

摘要:/* 题意: 不要低头,不要放弃,不要气馁,不要慌张。 PS:人生第一道自己独立做出来的树形dp... 给一棵树,标号1到n,每条边有两个权值,步行时间和驾车时间。车在1号点。 给m个必须访问的关键点,求从1号点出发,访问所有关键点一遍的最小时间。 注意车可以停在任意地方,但是只有1号点有一辆车,人最后也可以停留在任意点。 思路: 1.子树方向(注意dp1 dp2 dp4都是保证人一定要返回该点... 阅读全文

posted @ 2016-10-02 20:40 tun~ 阅读(249) 评论(0) 推荐(0)

摘要:/* 题意:给你一个有向无环图。给一个限定t。 问从1点到n点,在不超过t的情况下,最多可以拜访几个点。 保证至少有一条路时限不超过t. 思路: 1.由无后向性我们可以知道(取决于该图是一个DAG),这题一定可以dp。 2.dp[i][j]代表,到达点i,并且拜访了j个城市的最短时间。 wa点: 没有初始化数组中的0.. */ #include #define N 5050 using nam... 阅读全文

posted @ 2016-10-01 09:55 tun~ 阅读(448) 评论(0) 推荐(0)

摘要:/* 题意: 给你l和r,范围9e18,求l到r闭区间有多少个数字满足,连续的奇数的个数都为偶数,连续的偶数的个数都为奇数。 例如33433符合要求,44不符合要求。不能含有前导零。 思路: 队友说是数位dp...我都反映不过来。 知道是数位dp以后,思路就显而易见了。 dp的方法是最后一位的性质,是偶数还是奇数,是连续的第偶数个还是第奇数个。所以一共只有四种状态,而题目中最多19位数字..... 阅读全文

posted @ 2016-09-21 22:08 tun~ 阅读(373) 评论(0) 推荐(0)

摘要:/* 题意:给一个长度不超过5000的字符串,每个字符都是0到9的数字。 要求将整个字符串划分成严格递增的几个数字,并且不允许前导零。 思路: 1.很开心得发现,当我在前i个区间以后再加一个区间的时候,转移 的条件只跟最后一个区间的数字大小有关,这决定这道题可以dp... 2.dp[i][j]代表前j个字符,最后划分的区间的第一个字符是第i个的答案数。 3.可知对于所有的dp[i][i...n]... 阅读全文

posted @ 2016-09-06 15:58 tun~ 阅读(316) 评论(0) 推荐(0)

摘要:/* 我是一个习惯后悔,但是没办法忍受内疚感的二货== 这题是个无脑dp,但是比赛大概20min没出...其实最后5min我好好想想简单化边界条件,可以出的。 题意: 给你一个长度为1e6的由?*01四种字符组成的字符串,类似扫雷,?代表当前不确定,0代表当前无雷,并且 两边无雷,1代表当前五雷且两边有一个雷,2同样的,问当所有格子已知以后一共有多少种可能的局面。 思路: 首先想到的是,这个问... 阅读全文

posted @ 2016-09-05 19:10 tun~ 阅读(228) 评论(0) 推荐(0)

摘要:/* 题意:n个点组成的树,点和边都有权值,当第一次访问某个点的时候获得利益为点的权值 每次经过一条边,丢失利益为边的权值。问从第i个点出发,获得的利益最大是多少。 输入: 测试样例组数T n n个数每个点的权值 n-1条无向边 a b c a和b是点的标号,c是边的权值。 思路: 注意题目只强调是从某个点出发,并不一定要回到该点。 考虑树形DP。 先随便定义一个树根。然后对于某个点,我们需要维... 阅读全文

posted @ 2016-09-02 18:28 tun~ 阅读(491) 评论(0) 推荐(0)

摘要:题意: 有n天,m门课和常数k; 每天上一门课,每门课程有两个属性,最少作业量a,最多作业量b,和难度c。 1<=a<=b<=1e16 c<=100 1<=n<=m<=50 1<=k<=100 要求所有课程的作业量总和最多。 要求除第一天外,其他情况下作业量是前一天加k或者前一天乘k。 输出每天课程 阅读全文

posted @ 2016-05-05 12:12 tun~ 阅读(292) 评论(0) 推荐(0)

摘要:VJ上可找到中文题意。 思路: 首先分解有多少2与多少5.接下来就是dp。 分两次,一次是根据2的数量贪心,另外一次是根据5的数量贪心,看哪一次乘积的末尾0最少。 需要注意的是两点: 1.输入有0的情况,要判断你的ans是不是大于1如果大于1那么输出一条经过0的路径即可。 2.当根据2的数量贪心进行 阅读全文

posted @ 2016-04-17 17:10 tun~ 阅读(161) 评论(0) 推荐(0)

摘要:题意:飞行棋,从0出发要求到n或者大于n的步数的期望。每一步可以投一下筛子,前进相应的步数,筛子是常见的6面筛子。但是有些地方可以从a飞到大于a的b,并且保证每个a只能对应一个b,而且可以连续飞,例如a到b,b到c,则可以直接从a到c。思路:先用并查集将小的编号并入编号大的集合,然后就是常见的概率D... 阅读全文

posted @ 2015-12-20 21:19 tun~ 阅读(144) 评论(0) 推荐(0)

摘要:题意:给你三个均匀k面筛子。分别有k1 k2 k3个面,每个面朝上的概率是相等的。如果第一个筛子出现a第二个筛子出现b第三个筛子出现c那么置零。否则在当前和加上三个点数之和。求当前和大于n需要的步数的期望。思路:一开始状态转移搞错了,手推公式交了WA,后来想了想状态转移的过程发现每个状态都跟0状态有... 阅读全文

posted @ 2015-12-20 20:40 tun~ 阅读(191) 评论(0) 推荐(0)

摘要:题意:有n种选择,每种选择对应m种状态。每种选择发生的概率相等,每种选择中对应的每种状态发生的概率相等。求n种选择和m种状态中每种至少发生一次的期望。期望DP好别扭啊。要用倒推的方法。dp[i][j]表示已经发生了i种选择,j种状态。那么由dp[n][m]这个时刻到最终时刻的期望是0.而我们的起始时... 阅读全文

posted @ 2015-12-18 14:30 tun~ 阅读(115) 评论(0) 推荐(0)

摘要:搞懂了什么是矩阵快速幂优化....这道题的重点不是DP./*题意:小明要走某条路,按照个人兴致,向前走一步的概率是p,向前跳两步的概率是1-p,但是地上有地雷,给了地雷的x坐标,(一维),求小明安全到达最后的概率。思路:把路分成好多段,小明安全走完每一段的概率乘起来就是答案。dp[i]=p*dp[i... 阅读全文

posted @ 2015-12-17 16:58 tun~ 阅读(390) 评论(0) 推荐(0)

摘要:题意:有n个人进行m次比赛,每次比赛有一个排名,最后的排名是把所有排名都加起来然后找到比自己的分数绝对小的人数加一就是最终排名。给了其中一个人的所有比赛的名次。求这个人最终排名的期望。思路:渣渣的第一道概率DP...弱渣。dp[i][j]代表进行了i轮比赛之后得分为j的人数的期望,可以知道dp[i]... 阅读全文

posted @ 2015-12-10 23:19 tun~ 阅读(211) 评论(0) 推荐(0)

摘要:题意:给出n组数据,每组数据有一个类型。0代表至少选择一个,1代表至多选择一个,2代表任意选择。给出背包容量。如果背包不能满足最基本的要求输出-1。思路:背包问题变相考察~当0的时候初始化为-INF,然后就能保证至少选择一个。当1或2的时候初始化上一层的值,然后1和2稍微有点区别,1只能从上一层得到... 阅读全文

posted @ 2015-11-27 12:18 tun~ 阅读(193) 评论(0) 推荐(0)

摘要:题意:给n个点,给出矩阵代表i到j单向边的距离。要求,不介意访问每个点的次数,要求访问完每个点,使得路程总和最小。思路:由于不介意访问每个点的次数,所以可以先进行FLOYD求出任意两个点之间的最短路,然后就是DP。同样的,1代表有访问过,0代表没访问过。dp[s][j]代表访问状态为s的情况下最终到... 阅读全文

posted @ 2015-11-06 21:32 tun~ 阅读(784) 评论(0) 推荐(0)

摘要:题意:给n个点m条无向边。要求每个点最多走两次,要访问所有的点给出要求路线中边的权值总和最小。思路:三进制状态压缩DP,0代表走了0次,1,2类推。第一次弄三进制状态压缩DP,感觉重点是对数据的预处理,利用数组分解各个位数,从而达到类似二进制的目的。然后就是状态的表示,dp[s][i]表示状态s时到... 阅读全文

posted @ 2015-11-06 21:24 tun~ 阅读(137) 评论(0) 推荐(0)

摘要:题意:有n种化学物质,他们彼此反应会有一种消失并释放出能量。给出矩阵,第i行j列代表i和j反应j消失释放的能量。求最大释放多少能量。思路:状态压缩DP,我是这么想的。利用二进制0代表该物质还存在,1代表不存在。那么一共有2^(n)种状态,每个状态都视为从上一个状态发生一次反应少了一种物质。枚举可能少... 阅读全文

posted @ 2015-11-06 21:19 tun~ 阅读(252) 评论(0) 推荐(0)

摘要:题意:给一块n*m的田地,1代表肥沃,0代表贫瘠。现在要求在肥沃的土地上种草,要求任何两个草都不能相邻。问一共有多少种种草的方法。种0棵草也是其中的一种方法。n和m都不大于12.思路:状态压缩DP,dp[i][j]代表在第i行状态j一共有多少种可能的种植方法。j是二进制转化而来的状态,0代表不种草,... 阅读全文

posted @ 2015-11-06 19:30 tun~ 阅读(144) 评论(0) 推荐(0)

摘要:题意:给n个数将其分成连续的m组,使得这些组的数加和最大,组与组之间可以空数。/*dp[i][j]表示将前j个数分成i个组最大值状态转移方程是:dp[i][j]=max(dp[i-1][0...j-1],dp[i][j-1])+tmp[j];内存的优化是用滚动数组记录dp[i][...]和dp[i-... 阅读全文

posted @ 2015-11-02 15:55 tun~ 阅读(133) 评论(0) 推荐(0)

摘要:题意:某货旅行,在n个城市呆m天。给出从第i个城市到第j个城市的路费,或者留在某个城市的生活费。给出在第i天在第j个城市的收益。可以在城市之间任意穿梭逗留没有其他特殊要求。求收益最大是多少。思路:dp[i][j]代表这货在第i天在第j个城市的最大收益。然后状态转移方程是dp[i][j]=max(dp... 阅读全文

posted @ 2015-10-23 20:46 tun~ 阅读(195) 评论(0) 推荐(0)