随笔分类 - dp
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=5326WorkTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s):...
阅读全文
摘要:解析:比较简单的DP,从左向右一个一个连续着放,dp[X][Y]表示到第X个硬币的时候Y状态的方案数,Y=0表示x左边那个不是正面的,Y=1表示x左边那个是正面如果左边不是正面,那么当前放正面的就把方案数加到Y=1里面,放反面的就加到Y=0如果是正面,那么当前放正面就不成立了,所以不用加,放反面就加...
阅读全文
摘要:http://poj.org/problem?id=3734BlocksTime Limit:1000MSMemory Limit:65536KTotal Submissions:4626Accepted:2102DescriptionPanda has received an assignment...
阅读全文
摘要:http://poj.org/problem?id=2229题意:把一个整数拆分为2的幂。当n为奇数时dp[n]=dp[n-1];因为每总都加1,所以总数一样。当n为偶数时,分为有1和无1,有1.拆一个1,就变成奇数了,无1,就等于dp[n/2];SumsetsTime Limit:2000MSMe...
阅读全文
摘要:http://i.cnblogs.com/EditPosts.aspx?opt=1 The Romantic HeroTime Limit: 6000/3000 MS (Java/Others)Memory Limit: 131072/131072 K (Java/Others) Total Sub...
阅读全文
摘要:http://poj.org/problem?id=1655Balancing ActTime Limit:1000MSMemory Limit:65536KTotal Submissions:8295Accepted:3416DescriptionConsider a tree T with N ...
阅读全文
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1561树形dp+有依赖的背包。==分组背包。思路:思路:参考《背包九讲》分组背包:将物品分成k组,每组中有若干件物品,并且这些物品两两互斥(既对于第 i 组物品,只能选该组物品的其中一个,或者一个也不选),求在一定...
阅读全文
摘要:看别人思路的树形分组背包。题意:给出结点数n,起点s,机器人数k,然后n-1行给出相互连接的两个点,还有这条路线的价值,要求最小花费思路:这是我从别人博客里找到的解释,因为很详细就引用了dp[i][j]表示对于以i结点为根结点的子树,放j个机器人所需要的权值和。当j=0时表示放了一个机器人下去,遍历...
阅读全文
摘要:树形dp题意:给出n,p,一共有n个节点,要求最少减去最少的边是多少,剩下p个节点思路:典型的树形DP,dp[s][i]:记录s结点,要得到一棵j个节点的子树去掉的最少边数 考虑其儿子k 1)如果不去掉k子树,则 dp[s][i] = min(dp[s][j]+dp[k][i-j]) 0 #include#includeusing namespace std;int dp[200][200],father[200],brother[200],son[200];int n,p;void dfs(int root){ int k,i,j,temp; for(i=0;i=1;i--) ...
阅读全文
摘要:http://poj.org/problem?id=2486典型的回溯题目:特别是状态方程用三维的来标记是否要走回路。题意:一颗树,n个点(1-n),n-1条边,每个点上有一个权值,求从1出发,走V步,最多能遍历到的权值思路:树形dp,比较经典的一个树形dp。首先很容易就可以想到用dp[root][k]表示以root为根的子树中最多走k时所能获得的最多苹果数,接下去我们很习惯地会想到将k步在root的所有子结点中分配,也就是进行一次背包,就可以得出此时状态的最优解了,但是这里还有一个问题,那就是在进行背包的时候,对于某个孩子son走完之后是否回到根结点会对后面是否还能分配有影响,为了解决这个问
阅读全文
摘要:树形dp:题意:电视台发送信号给很多用户,每个用户有愿意出的钱,电视台经过的路线都有一定费用,求电视台不损失的情况下最多给多少用户发送信号。思路:树状dp。由于求的是最多多少用户,那么我们可以把用户个数当成一个状态。dp[i][j]代表i节点为根节点的子树j个用户的时候最大剩余费用。 则dp[i][j] = max(dp[i][j], dp[i][k]+dp[son][j-k]-w[i][son]); 注意两点,第一点是上面式子中的dp[i][k]必须先用一个tem[MAX]数组提取出来,因为在计算的过程中会相互影响。第二点是价值可能是负值,所以dp初始化的时候要初始化为负的最大值...
阅读全文
摘要:树形DP题意:给出每个房间拥有的BUG数和能得到的能量数,然后给出每个房间的联通图,要到下一个房间必须攻破上一个房间,每个士兵最多消灭20个BUG,就算不足20个BUG也要安排一个士兵思路:先建立树,然后进行树形DPhttp://acm.hdu.edu.cn/showproblem.php?pid=1011 Starship TroopersTime Limit: 10000/5000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 9538Accepted Submission(s):
阅读全文
摘要:分组背包+至少一个+最多一个+随意。包之间的传值就是把上一组的背包复制到这组背包中,达到背包之间的联系。http://acm.hdu.edu.cn/showproblem.php?pid=3535AreYouBusyTime Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2676Accepted Submission(s): 995Problem DescriptionHappy New Term!As having become a junior,
阅读全文
摘要:http://poj.org/problem?id=3211神奇01背包。只是有多组0-1背包,即每种颜色进行一次背包选择。> 选择的方式是先截取每种颜色总时间的一半,也就是说,至少要消耗一半的时间。> 然后用做 f[一半的时间] 数组最大值,背包之后,用总的时间减去得到的f[一半的时间]的最大值的差值,是消耗的最少时间。数组一定要开得很大。Washing ClothesTime Limit:1000MSMemory Limit:131072KTotal Submissions:8478Accepted:2636DescriptionDearboy was so busy rece
阅读全文
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=3033分组背包。我参考的解题报告:http://blog.sina.com.cn/s/blog_6ec19c780100w1nn.htmlI love sneakers!Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3500Accepted Submission(s): 1428 Problem DescriptionAfter months of har
阅读全文
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1712分组背包问题有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。这些物品被划分为若干组,每组中的物品互相冲突,最多选一件。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。算法这个问题变成了每组物品有若干种策略:是选择本组的某一件,还是一件都不选。也就是说设f[k][v]表示前k组物品花费费用v能取得的最大权值,则有:f[k][v]=max{f[k-1][v],f[k-1][v-c[i]]+w[i]|物品i属于组k}使用一维数组的伪代码如下:for所有的
阅读全文
摘要:http://poj.org/problem?id=2576二维数组01背包的变形。Tug of WarTime Limit:3000MSMemory Limit:65536KTotal Submissions:8147Accepted:2191DescriptionA tug of war is to be arranged at the local office picnic. For the tug of war, the picnickers must be divided into two teams. Each person must be on one team or the o
阅读全文
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1114完全背包,求最小,要把dp的初始值改为很大的数值。 Piggy-BankTime Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 9812Accepted Submission(s): 4932 Problem DescriptionBefore ACM can do anything, a budget must be prepared and the nec
阅读全文
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1963完全背包。题意:给出初始资金,还有年数,然后给出每个物品的购买价格与每年获得的利益,要求在给出的年份后所能得到的最大本利之和。思路:因为每种物品可以多次购买,可以看做是完全背包的题目,但是要注意的是,由于本金可能会很大,所以我们要对背包的大小进行压缩,值得注意的是,题目已经说了本金与物品的购买价格都是1000的倍数,所以我们可以将他们都除以1000来进行压缩,然后就是一道完全背包模板题了。 InvestmentTime Limit: 5000/1000 MS (Java/Others)Memory Li
阅读全文
摘要:数组01背包。http://acm.hdu.edu.cn/showproblem.php?pid=2126http://blog.csdn.net/crazy_ac/article/details/7869411f[i][j][k]表示前i种物品,买了j个,花了小于等于k的钱的时候的方案数因为是小于等于k,所以初始化的时候要注意哦。那么转移的时候第i种物品取或者不取f[i][j][k]+=f[i-1][j][k]; f[i][j][k]+=f[i-1][j-1][k-v[i]]; Buy the souvenirsTime Limit: 10000/1000 MS (Java/Others)M
阅读全文

浙公网安备 33010602011771号