Codeforces 动态规划专项练习
Winchester_
这个作者很懒,什么都没留下…
展开
-
Codeforces 486 D Valid Sets 记忆化搜索
题目大意:给出一棵树,求这棵树的满足最大点与最小点之差小于等于d的连通子图的个数。 题目分析:枚举每个点,假设当前该点就是该联通子图的最大点,进行遍历,最后将每个点的方案总数累加起来即可。#include#include#include#include#include#include#include#include#include#includeusi原创 2016-07-10 15:51:25 · 707 阅读 · 0 评论 -
Codeforces 23 E Tree 树形dp+高精
题目大意:给你一棵树,让你切断一些边,使得剩下的每个连通块的点的个数的乘积最大,输出这个乘积。题目分析: 由于题目要求各个连通块点的乘积,设状态dp[i][j]表示i作为一个连通块时其点个数为j时候的值。每次枚举与当前节点联通的其他节点所已经扩展的总结点数量。则dp[u][i+j]=max(dp[u][i]*dp[v][j]) {其中u为当前节点,v为u的子节点,i,j分别枚举原创 2016-07-15 20:14:45 · 1040 阅读 · 0 评论 -
Codeforces 543 D Road Improvement 树形dp
题目大意:给定n个点的树#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;#define For(i,n) for(int i=1;i<=n;i++)#define Rep(i,n) for(int i=0;原创 2016-07-15 10:00:53 · 841 阅读 · 0 评论 -
Codeforces 161 D Distance in Tree 树形DP
题目大意:给出一棵n个节点的树,统计树中长度为k的路径的条数(1<=n<=50000 ,1);题目分析:设dp[i][j]表示以i作为长度为j的路径其中一个点的方案数。转移:dp[u][j]+=dp[v][j-1]; 方案计数:ans+=dp[v][j]*dp[u][k-j-1];#include#include#include#include原创 2016-07-15 09:50:11 · 1031 阅读 · 0 评论 -
Codeforces 577 B Modulo Sum 简单数学+dp
http://codeforces.com/problemset/problem/577/B题目大意:给定两个数n和m,还有a1-an的n个数,判断是否存在该数列的一个子序列,使得子序列元素的和可以被m整除。题目分析:这题的n的范围是小于10^6,而m小于10^3。事实上当n>=m时必然满足条件。因而仅需要处理n由上述知只要设一个二维布尔数组f[i][j]表示到第i位数原创 2016-07-01 00:20:54 · 887 阅读 · 0 评论 -
Codeforces 474 D Flowers
http://codeforces.com/problemset/problem/474/D题目大意:一个东西爱吃花,有两种颜色红R和白W,他吃白花每次都一组一组吃,一组是连续在一起的k朵,问在花的朵数从ai到bi范围里,他总共有多少种吃法。题目分析:这是一道比较裸的计算方案数的DP。由于题目告诉我们吃白花是一组一组的吃,由此得出当前的状态数必然与i-k的状态数有关原创 2016-07-01 00:09:01 · 882 阅读 · 0 评论 -
codeforces 229 D Towers 贪心+DP
题目大意:有n(1座塔排在一条直线上,从左到右每个塔的高度分别为hi(1,每次操作你可以选择一座塔(假设是第i座),用吊车把它吊起来,然后放到与它相邻的一座塔上(可以是第i-1座也可以是第i+1座),这样,新塔的高度为两座塔的和,完成操作后,塔的总数减少一座。问最少需要多少次操作可以使得所有的塔从左到右形成一个非递减序列。 题目分析:刚拿到这题的时候想的是贪心,然而贪心在最后处理时可原创 2016-06-30 09:21:20 · 589 阅读 · 0 评论 -
写在前面——来自蒟蒻的CF动规专练
终于在即将期末考之前抽出一段时间停课来做动规题...其实大概也就这三十几道题,本来有更多然而并不是特别打得动...(懒而之前一直也没有写博客的习惯,很多题做过也没进行一下总结...就像打这些基础动规都有种力不从心的感觉...而真正难题并没有去打下去...抱着训练思维外加总结忐忑的开启了博客...回到正题...事实上这一些题解都是些基础动规,甚至有的程序一眼秒...然而仅仅只是个原创 2016-06-30 23:50:25 · 717 阅读 · 0 评论 -
codeforces 366 C Dima and Salad dp
http://codeforces.com/problemset/problem/366/C题目大意:在一个冰箱里有n种水果,并且这些水果每一种都有一个美味度和一个卡路里的属性, 小明要从这些水果中选出来一些做一个水果沙拉,并且要求他的水果沙拉的美味度之和是卡路里和的k倍,问小明是否可以做出这么一个水果沙拉,若不能输出-1,否则输出符合要求的最大的美味值之和。题目分析:原创 2016-07-10 16:03:17 · 713 阅读 · 0 评论 -
Codeforces 543 A Writing Code 计数DP
http://codeforces.com/problemset/problem/543/A题目大意:n个人,一共要写m行程序,每个程序员每行出现的bug数为ai,要求整个程序出现的bug数不超过b的方案数.题目分析:简单的计数DP,01背包变形。需要记录的是写到第i行时错误的bug数为j的方案。所以定义二维数组dp[i][j]。转移与01背包类似。具体见代码;初始化d原创 2016-07-01 00:43:59 · 924 阅读 · 0 评论 -
vijos 1892 树上的最大匹配问题 树形dp
https://vijos.org/p/1892题目大意:树上的最大匹配是多少? 最大匹配解的方案共有多少组?(首先树可以被看作是一个无向图G.(对于无向图G来说, 其上的最大匹配是边集的一个子集, 满足:(对于G中每一个点来说, 都只有最多一条与之相连的边在这个子集中.(最大匹配就是这个子集大小可以到达的最大值.以上大概就是树上最大匹配的概念。原创 2016-07-18 09:05:51 · 2506 阅读 · 0 评论