题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1145 题解:首先只要是dp的值只和上一个状态有关系那么就可以优化一维,然后这题不妨设dp[2][M],表示和为1-M的一共有多少种有种前缀的思想. 然后dp[][M]=dp[][M-1]-dp[M-k]. #include <iostream> #include <cstring> #include <cstdio> #define mod 1000…
树形dp空间优化 介绍 有时题目会告诉我们n叉树的最大层数,或者给出一个完全n叉树树,直接做树形dp会爆空间时,就可以用这个优化方法. 多数树形dp都是先dfs到子树,再合并到根上,显然当合并到根上时子树的信息没有意义了,这就浪费了空间. 举个例子: 一般的解法会用f[i(1~5)] 但在合并到2后,f[3] f[4]没用了,这时我们就可以用这些空间存5的信息. 实现 定义dfn,注意这里的dfn与dfs需有区别. 以下手动模拟dfs 当前点 dfn 1          1 2       …
Online Judge:Luogu-P2160 Label:思维题,Dp,空间优化 题面: 题目描述 给\(N\)本书,每本书有高度\(Hi\),厚度\(Ti\).要摆在一个三层的书架上. 书架的宽是每层书厚度和的最大值.书架的高度是每层最高书的高度之和. 求如何放书,使得书架的面积最小. 输入 第一行一个整数\(n\),表示书本的个数. 接下来\(n\)行,每行2个整数,表示每本书的高度和厚度. 输出 输出一个整数,表示书架的最小面积. 样例 Input 4 220 29 195 20 20…
Online Judge:未知 Label:Dp+滚动+前缀和优化 题目描述 有一个长度为1*n的棋盘,有一些棋子在上面,标记为L和R. 每次操作可以把标记为L的棋子,向左移动一格,把标记为R的棋子,向右移动一格,前提条件是目标格子为空.结果任意多次操作之后,棋盘会有多少种不同的状态? 输入 第一行一个字符串,包含'L','R','.'. 输出 输出所有不同的棋盘状态,对1e9+7 求余. 样例 Input R.. R.L ...R..L..L R..L......LLR.RRL..RR....…
题目链接:LightOJ - 1248 Description Given a dice with n sides, you have to find the expected number of times you have to throw that dice to see all its faces at least once. Assume that the dice is fair, that means when you throw the dice, the probability…
1145 - Dice (I)   PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 32 MB You have N dices; each of them has K faces numbered from 1 to K. Now you have arranged the N dices in a line. You can rotate/flip any dice if you want. How m…
Description 有n根木棍, 第i根木棍的长度为Li,n根木棍依次连结了一起, 总共有n-1个连接处. 现在允许你最多砍断m个连接处, 砍完后n根木棍被分成了很多段,要求满足总长度最大的一段长度最小, 并且输出有多少种砍的方法使得总长度最大的一段长度最小. 并将结果mod 10007... Input 输入文件第一行有2个数n,m.接下来n行每行一个正整数Li,表示第i根木棍的长度.n<=50000,0<=m<=min(n-1,1000),1<=Li<=1000. O…
目录 题意: 输入格式 输出格式 思路: DP凸优化的部分 单调队列转移的部分 坑点 代码 题意: 有n条超级大佬贞鱼站成一行,现在你需要使用恰好k辆车把它们全都运走.要求每辆车上的贞鱼在序列中都是连续的.每辆车上的贞鱼会产生互相怨恨的值,设a与b之间的怨恨值为G(a,b),一辆车上的贞鱼的编号从L到R,那么这辆车上的怨恨值为\(\sum_{L<=a,b<=R}G(a,b)\).注意G(a,b)=G(b,a),一对贞鱼之间的怨恨值只算一次,也就是G(a,b)和G(b,a)只算一次. 1<…
HDU3480_区间DP平行四边形优化 做到现在能一眼看出来是区间DP的问题了 也能够知道dp[i][j]表示前  i  个节点被分为  j  个区间所取得的最优值的情况 cost[i][j]表示从i到j元素区间中的值,这里可以直接排序后简单求出——也就是我们的代价函数 这样其实就能够做出来了,但是空间复杂度是n3入门的题能过,普通点的都会考察你一下斜率DP的优化和四边形不等式的优化.目前我主要就懂了平行四边形的优化 首先你要确保dp和cost这两个都满足四边形不等式这个前面有过证明的博客这里就…
写一写要讲什么免得忘记了.DP的优化. 大概围绕着"是什么","有什么用","怎么用"三个方面讲. 主要是<算法竞赛入门经典>里的题目讲解,但是有些过于简单的删去了,添加了一些不怎么简单的省选题目作为例子 这里的DP优化都是涉及到O(nk)到O(nk-1)方法比较巧妙也有用到数学里面的定理之类. 所以秉着由易到难的原则,安排内容如下: 专题1:动态规划基础知识和计数DP.数位DP(几大类DP的类型介绍) 专题2:DP的简单优化(稍微提…