
---------dp---------
deerly_
懒了这么久,我也该勤快一些了
展开
-
Favorite Dice SPOJ - FAVDICE && 概率dp
题目大意 一个N面骰子,问把每一面都至少掷出一次期望次数是多少?input 2 1 12output 1.00 37.24idea 一开始的时候,一直在想扔出一面的期望是1,扔出两面的期望是(1 - 1/n) * 2, 扔出三面的期望是(1 - 2 / n) * 3 ….试了试样例,发现不对。 正确的应该是4/4 + 4/3...原创 2018-09-14 21:02:41 · 276 阅读 · 0 评论 -
CodeForces - 991D Bishwock (DP)
CodeForces - 991D Bishwock (DP)题目链接 题目大意:在一个2 * n的方格(有些格子被占据)里面放4种形态的小方格,这四种形态分别对应四个小方格形成的正方形缺一个角。用x表示小方格,.表示空白,这四个形态分别是 XX XX .X X. X. .X XX XX 然后问你最多能放多少个?input 00 00X00X0XXX0...原创 2018-06-29 17:56:23 · 404 阅读 · 0 评论 -
P1064 金明的预算方案 (01背包)
P1064 金明的预算方案 (01背包)题目连接 题目大意:在01背包问题上的一个小小变形,每个物品分为主件和附件,要买附件必须拥有它的主件,每次主件最多拥有2个附件。 样例: 1000(你有的钱) 5(物品的数量) n个物品 物品的单价 物品的价值 物品是不是附件 0是主件 非0 是几就是第几个物品的附件 800 2 0 400 5 1 300 5 1 400 3 0 ...原创 2018-06-16 13:29:28 · 209 阅读 · 0 评论 -
Sumsets POJ - 2229 (完全背包变形 || 简单dp)
Sumsets POJ - 2229 (完全背包变形 || 简单dp)题目链接 题目大意:求把一个整数分解为2的幂的和共有几种方案 7=1+1+1+1+1+1+1 7=1+1+1+1+1+2 7=1+1+1+2+2 7=1+1+1+4 7=1+2+2+2 7=1+2+4 输出6 思路:一开始的时候推过,没推出来。后来看了一眼题解,说是完全背包的变形,顿悟。可还是没想出来怎么变...原创 2018-06-15 20:11:13 · 325 阅读 · 0 评论 -
Ant Counting POJ - 3046 (DP)
Ant Counting POJ - 3046 (DP)题目链接 题目大意:t种蚂蚁,一共n个,问把他们分组,分成每个集合里面有k个,s<=k<= e,问多少种分法。 While observing one group, the set of three ant families was seen as {1, 1, 2, 2, 3}, though rarely in ...原创 2018-06-22 22:11:24 · 190 阅读 · 0 评论 -
Dollar Dayz POJ - 3181 (完全背包 && 大数)
Dollar Dayz POJ - 3181 (完全背包 && 大数)题目链接 题目大意:用1~k的数去凑n(每个数都有无限个),问有多少种凑法? 题目样例: 5(n) 3(k) 输出:5 这个题目就是普通的完全背包,但是他有一个特殊的地方就是n是1000 k是100 这样会爆longlong 于是看了别人的博客,是开两个dp数组,第一个记录前18位,第二个记录...原创 2018-06-22 17:43:59 · 157 阅读 · 0 评论 -
Coins POJ - 1742 (背包变形)
Coins POJ - 1742 (背包变形)题目链接 题目大意:给n个硬币,问凑1~m中的数,能凑出几个? 题目样例: 3(n个硬币) 10(m) 1 2 4 2 1 1 前n个是硬币的面额,后n个是每个硬币面额的个数 2 5 1 4 2 1 输出:8 4第一反应是多重背包,然后就去学了下。附代码#include <iostream>#include...原创 2018-06-22 17:33:22 · 192 阅读 · 0 评论 -
Food Delivery ZOJ - 3469 区间dp
Food Delivery ZOJ - 3469 区间dp题目链接 题目大意:位于x位置有一家快餐店,骑车去给N个位置的人送外卖,车速V-1m/min(就是说这个速度是时间/路程,直接乘上路程就是时间),N个人每一分钟没有收到外卖不满意值就是加W,问送外卖的最小不满意值。 题目分析:跟之前做过的一道Kirill the Gardener 3 十分相似,只不过那个是单向的,这个是双向的。看了...原创 2018-05-30 17:03:52 · 150 阅读 · 0 评论 -
Halloween Costumes LightOJ - 1422 区间dp
Halloween Costumes LightOJ - 1422 区间dp题目链接 题目大意:按顺序去参加舞会。每个舞会对衣服都有要求。可以连续穿好多件衣服。需要时候就脱下来,但是一旦脱下来,这件衣服就报废了。问最少需要几件衣服。 输入: T组样例 4 1 2 1 2 输出: 3 第一天人穿1,第二天穿2,套在1外边,第三天脱2,漏出1,最后一天穿2。一共穿三次 思路: ...原创 2018-05-29 12:19:54 · 239 阅读 · 0 评论 -
POJ - 1651 区间dp
POJ - 1651 区间dp题目链接 题目大意:n个数,每次取一个数(第一个数和最后一个不能取),得到的值是这个数和相邻两边的乘积,问得到的结果最小值是多少 sample: 5 10 1 50 20 5 输出: 1150 1*50*20 + 1*20*5 + 10*1*5 = 1000+100+50 = 1150. 心路历程:因为是区间dp的题,所以毫不犹豫就去想区间dp了。一...原创 2018-05-28 21:32:34 · 271 阅读 · 0 评论 -
HDU - 4283 You Are the One 区间dp
HDU - 4283 You Are the One 区间dp题目链接 题目大意:有n个人排成一排要上台表演,每个人有一个屌丝值pi。第i个上台表演的人,他的不满意度为(i-1)*pi。 现在有一个类似于栈的黑屋子,你可以让某些人进入这个黑屋子。这些人要按照排的顺序来,那么对于排在最前面的人, 就有两个选择: (1)让他直接上台表演; (2)让他暂时进黑屋子。 现在请你选择一个合...原创 2018-06-25 17:27:39 · 170 阅读 · 0 评论 -
String painter HDU - 2476 区间dp
String painter HDU - 2476 区间dp题意:给出两个串s1和s2,一次只能将一个区间刷一次,问最少几次能让s1=s2 例如zzzzzfzzzzz,长度为11,我们就将下标看做0~10, 变成abcdefedcab 先将0~10刷一次,变成aaaaaaaaaaa 1~9刷一次,abbbbbbbbba 2~8:abcccccccba 3~7:abcdddddcb...原创 2018-06-25 20:25:33 · 223 阅读 · 0 评论 -
Broken robot CodeForces - 24D && 概率dp
题目大意 n*m的矩阵,一开始机器人位于(x,y)位置,可以在原地不动,或者向左走,或者向右走,或者向下走。走到左(右)边界就不可以再向左(右)走。问走到第n行的期望步数是多少。(原地不动也算是一步)input 10 14 5 14output 18.0038068653idea 首先要懂一个知识点。对于一个不在边界的点(x, y),如果可以...原创 2018-09-14 10:41:43 · 432 阅读 · 0 评论 -
Help Me Escape ZOJ - 3640 && 概率dp
题目大意给你一个初始值f,有n个洞口,你每次被随机分到这n个洞口的其中一个,如果你的f&gt;c[i](洞的防御力),那么就可以跳出了,需要的天数是p*c[i]*c[i],如果f&lt;=c[i],那么他的攻击力变为f+c[i],然后又随机到一个洞口,天数加1.求最后出去天数的期望值。p = (1 + sqrt(5)) / 2. 向下取整input3 11 2 3output...原创 2018-09-17 20:24:35 · 210 阅读 · 0 评论 -
Wannafly挑战赛22 字符路径Dp
题目链接 题目描述 给一个含n个点m条边的有向无环图(允许重边,点用1到n的整数表示),每条边上有一个字符,问图上有几条路径满足路径上经过的边上的字符组成的的字符串去掉空格后以大写字母开头,句号 ‘.’ 结尾,中间都是小写字母,小写字母可以为0个样例 6 11 1 2 A 1 2 _ 3 4 _ 2 4 B 2 3 a 2 3 _...原创 2018-08-23 16:31:48 · 170 阅读 · 0 评论 -
POJ - 1741 (树分治)
题目链接 题目大意 一棵树,n个节点,给出边与边的连接情况以及权值。问有多少条路径的长度<=m。样例 5 4 1 2 3 1 3 1 1 4 2 3 5 1 8思路 选定 一个根,我们会发现所有的路径分两种情况:一是经过这个根,二是不经过这个根。对于第二种情况,我们会发现它是第一种情况的子问题。 我们只要想出第一种情况...原创 2018-08-23 15:55:18 · 207 阅读 · 0 评论 -
Computer HDU - 2196 (树形dp || 树的直径)
Computer HDU - 2196 (树形dp || 树的直径)题目链接 题目大意: 给定一棵树,知道相邻结点的距离,问对于每一个结点,和距离它最远的结点之间的距离是多少。 Input: 5 n个结点 1 1 表示2和1之间的距离是1 2 1 表示3和2之间的距离是1 3 1 表示4和3之间的距离是1 1 1 表示5和1之间的距离是1...原创 2018-07-27 21:33:47 · 612 阅读 · 0 评论 -
A - Proud Merchants HDU - 3466 (01背包+附属条件)
A - Proud Merchants HDU - 3466 (01背包+附属条件)题目链接 题目大意:n件物品,m块钱,每件物品pi价格,qi是买这件物品必须有的钱数,vi是这件物品的价值。问获得的最大的价值。 样例 3 10 5 10 5 3 5 6 2 7 3 输出 11思路:01背包多了一个附属条件。感觉这个样例给的就很ok ,我们发现如果我们...原创 2018-07-24 15:41:49 · 214 阅读 · 0 评论 -
CodeForces - 1000D:Yet Another Problem On a Subsequence (DP+组合数)
CodeForces - 1000D:Yet Another Problem On a Subsequence (DP+组合数)题目大意:这题目啊,贼难理解… 定义一个数列是“好的”:第一个数字a[0]为数列长度+1。 定义一个数列的子序列是“好的”:这个子序列能分割成几个(包括一个)“好的”数列。 各一个数列,求“好的”子序列的数目。 题目分析:想了好久没想出来。主要是方向想错了,我...原创 2018-07-08 22:11:48 · 334 阅读 · 0 评论 -
Alyona and Strings CodeForces - 682D DP
Alyona and Strings CodeForces - 682D DP题目大意: 给你两个长度均小于等于1000的字符串,你要在第一个串中找k(k<=10)个连续的子串,并且这些字串在第二个字符串中均出现且顺序相同,问这些字串最大的长度和。 题目分析:很显然,如果没有k个子串的限制的话,就是一个最大公共子序列的问题。现在就是K个最大公共子序列的问题了。 当时想的时候,是用...原创 2018-07-08 20:53:34 · 235 阅读 · 0 评论 -
DP之字符串
总结下跟字符串有关的dp跟回文有关系的字符串Problem1 给定一个字符串,问分割成最少的子串,是每个子串均为回文串。 状态转移方程 : dp[j] = min(dp[j], dp[i - 1] + 1); 具体: for(int j = 1; j <= len; j++) { //枚举长度,因为6这个长度的结果是可以用5推过来的。 for(i...原创 2018-06-25 21:33:16 · 259 阅读 · 0 评论 -
Kirill the Gardener 3 URAL - 2072 DP
Kirill the Gardener 3 URAL - 2072 DP题目链接 题目大意:有n朵花,要求按照权值递增的顺序浇水,浇水一次花一个时间,走一个单位长度花费一个单位时间。问最小花费。 input: 6 3 2 5 6 2 5 output: 21 比赛的时候没有想出是什么思路,后来听别人说是dp,就又想了想,然而还是没有想出来。想到了这个题的关键点是有相同点的时候应该...原创 2018-05-23 18:16:19 · 298 阅读 · 0 评论 -
Concerts Gym - 101669A DP
题目链接 题目大意:给出26个字母距离下一个字母的必须要有的间隙,问最大匹配数。 Input: 2 10 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 AB (范围3e2) ABBBBABBBB (1e5) Output:10 样例分析:(1,3), (1, 4), (1, 5), (1, 7), (1, 8), (1, ...原创 2018-05-23 11:58:15 · 481 阅读 · 0 评论 -
括号匹配 (区间dp)
区间dp题目大意:给出一个的只有’(‘,’)’,’[‘,’]’四种括号组成的字符串,求最多有多少个括号满足匹配。 题目链接 思路:用dp[i][j]表示区间i~j的最大匹配数,对于dp[i][j] = dp[i + 1][j - 1] + (s[i]和s[j]匹配?2 : 0),开始时dp[i][j]均为0。 代码如下:#include <cstdio>#inclu...原创 2018-05-16 20:35:14 · 1803 阅读 · 0 评论 -
Palindrome subsequence HDU - 4632 (区间dp)
Palindrome subsequence HDU - 4632 (区间dp)题目链接 题目大意:求字符串有多少回文子序列。(这里的子序列可以不连续) input: 4 a aaaaa goodafternooneveryone welcometoooxxourproblems output: Case 1: 1 Case 2: 31 Case 3: 421 Cas...原创 2018-05-17 11:17:52 · 239 阅读 · 0 评论 -
URAL 1635. Mnemonics and Palindromes (区间dp)
URAL 1635. Mnemonics and Palindromes(区间dp)题目链接 题目大意:给定一个字符串,问分割成最少的子串,是每个子串均为回文串。 题目分析:可以用普通的区间dp做法,但是字符串的长度达到了4000,n^3会超时,要想办法降到n^2。想了很久,没有想出来,看了博客的做法。先预处理出来区间[i, j]是否为回文串。假如字符串的长度为10, 那么以6为长度的字符...原创 2018-05-17 10:49:01 · 189 阅读 · 0 评论 -
吉哥系列故事――恨7不成妻 HDU - 4507
吉哥系列故事――恨7不成妻 HDU - 4507 (数位dp)题目链接:https://cn.vjudge.net/contest/163023#problem/I 题目大意: 如果一个整数符合下面3个条件之一,那么我们就说这个整数和7有关 1、整数中某一位是7; 2、整数的每一位加起来的和是7的整数倍; 3、这个整数是7的整数倍; 现在问题来了:吉哥想知道在一...原创 2018-04-13 15:52:50 · 463 阅读 · 0 评论 -
XHXJ's LIS HDU - 4352
HDU - 4352 XHXJ’s LIS (数位dp)题目链接:https://cn.vjudge.net/contest/163023#problem/B 题目大意: 问L到R,各位数字组成的严格上升子序列的长度为K的个数。 0< L<=R<2^63-1 and 1<=K<=10 注意这里最长上升子序列的定义,和LIS是一样的,不要求是连续的 题目...原创 2018-04-13 14:47:44 · 319 阅读 · 0 评论 -
Balanced Numbers SPOJ - BALNUM
Balanced Numbers SPOJ - BALNUM (数位dp)题目链接:https://cn.vjudge.net/contest/163023#problem/J 题目大意: 问A到B之间有多少个数,有多少数 符合以下两个条件。 数位0-9 中 ,每一个奇数数位有 偶数个, 偶数数位有奇数个。也就是如果有1 的话,那必须有偶数个1。如果有2的话,必须有奇数个2,当然没有也...原创 2018-04-13 13:26:16 · 204 阅读 · 0 评论 -
HDU 3709 Balanced Number
HDU 3709 Balanced Number(数位DP)题目链接:https://cn.vjudge.net/contest/163023#problem/F 题目大意:对于某个数字,以其中一位为支点,分成左右两边。如果左右两部分的 sigma(d[i] * | i - fixloc |)相等,那它就是Balaced Number。比如:4139以3为分界点4*2+1*1=9 and 9...原创 2018-04-13 12:54:09 · 103 阅读 · 0 评论 -
CodeForces - 55D A - Beautiful numbers
CodeForces - 55D A - Beautiful numbers(数位dp)题目链接:https://cn.vjudge.net/contest/163023#problem/A 题目大意:求L~R范围内能被本身每个非零位整除的数的个数。(1 ≤ l ≤ r ≤ 9 ·1e18) 题目分析: 第一个要知道的知识点: sum%(x*n)%x == sum%x;证明:...原创 2018-04-13 12:24:44 · 272 阅读 · 0 评论 -
POJ - 3252 E - Round Numbers
POJ - 3252 E - Round Numbers(数位dp)题目链接:https://cn.vjudge.net/contest/163023#problem/E 题目大意:求l~r范围内的整数转化成二进制形式0和1个数相等的数的个数 题目分析:数位dp。挺好想的,关键是前导零不算是0,就是说0001100,1的个数是2,0的个数也是2。主要是要有一个变量标记一下。#incl...原创 2018-04-10 17:24:53 · 177 阅读 · 0 评论 -
HDU - 3652 B-number
HDU - 3652 B-number(数位dp)题目大意:1~n中有多少包含“13”并且能被“13”整除的。比如130,2613。 题目分析:数位dp。 当时主要是卡到了能被13整除这里。其实是145%13 = ((((1%13)* 10) + 4) %13) * 10 + 5)%13) = 2。跟字符串变成整数差不多。 代码如下:#include <bits/std...原创 2018-04-10 16:58:40 · 175 阅读 · 0 评论 -
风之守护 URAL - 1009 URAL - 1012 URAL - 1013
DP URAL - 1009 URAL - 1012 URAL - 1013题目链接:https://cn.vjudge.net/contest/190727#problem/B(简单) https://cn.vjudge.net/contest/190727#problem/H(大数) https://cn.vjudge.net/contest/190727#problem/K(矩阵...原创 2018-05-11 11:38:54 · 326 阅读 · 0 评论 -
URAL 1119. Metro(简单dp)
URAL 1119. Metro(简单dp)题目链接:https://cn.vjudge.net/contest/190727#problem/C 题意:给一个n*m的方格,某人从(0,0)出发,要到达(n,m),给出k个点的坐标,当走到这些点时可以沿对角线到达,每方格边长为100,问他需走的最短路程。 题目分析:对于每个将要到达的点,取它dp[i -1][j] ,dp[i][j - 1]...原创 2018-05-11 12:43:21 · 279 阅读 · 0 评论 -
石子合并 区间dp
石子合并 区间dp题目链接:http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=737 题目大意: 有N堆石子排成一排,每堆石子有一定的数量。现要将N堆石子并成为一堆。合并的过程只能每次将相邻的两堆石子堆成一堆,每次合并花费的代价为这两堆石子的和,经过N-1次合并后成为一堆。求出总的代价最小值。 题目分析:区间dp 参考博客 区间dp...原创 2018-05-15 16:11:57 · 352 阅读 · 0 评论 -
False Mirrors URAL 1152. dfs
False Mirrors URAL 1152.题目大意:这道题的大体意思是,一个n个阳台,每个阳台上有多个怪物,a1,a2,a3……an; 然后一个人可以shoot,射中一个阳台,那么这个阳台和左右两边相邻的阳台上的怪物都会死掉,剩下的不死的怪物就会反击,每只反击一个Unit的伤害,问最小的伤害是多少? a1和an是相邻的! 假如a1和a 5之间阳台都被毁坏了,也不算数相...原创 2018-05-14 17:23:47 · 188 阅读 · 0 评论 -
Ural1167 Bicolored Horse 基础Dp
Ural1167 Bicolored Horses 基础Dp题目大意:农夫将让马排成一列按照顺序进入马厩,一个马厩的不愉快的值是这个马厩中的白马与黑马的数量的乘积,求最小的不愉快的和,要求每一个马厩中至少有一匹马 。 input: 6 3 1 1 0 1 0 1 output: 2 题目分析:dp[i][j]表示前i匹马进入前j个马厩的不开心值(是前i匹马不是...原创 2018-05-14 11:46:18 · 137 阅读 · 0 评论 -
URAL 1073. Square Country(完全背包)
URAL 1073. Square Country(完全背包)题目链接:https://cn.vjudge.net/contest/190727#problem/I 题目大意:拿n元钱去买地,已知每块地都是正方形,而且它的花费是a*a(a边长)。问这些钱所买地的最少块数,钱要正好花完。 input:344 output:3 题目分析:完全背包的变形。 一般的完全背包是最多能装多少,这个...原创 2018-05-14 10:26:10 · 200 阅读 · 0 评论 -
背包模板
背包01背包#include<stdio.h>#include<string.h>int p[1123], m[1123], dp[11223];int main(){ int n, x, i, j; while(~scanf("%d %d", &n, &x)) { for(i = 1; i <...原创 2018-05-11 17:23:05 · 147 阅读 · 0 评论