随笔分类 - DP动态规划
数位DP
摘要:通常问法:区间[l,r]的数中,满足某一条件数的个数。 技巧1:[x,y] 中满足情况的个数位f[y]-f[x-1] 技巧2:从树的角度考虑问题 度的数量 题意:寻找[L,R]之间满足,恰好是K个 互不相等的B的整次幂之和。 题目就是在一个区间[x,y]内,有多少个符合题意的数,这里的符合题意是指:
区间dp
摘要:区间dp:顾名思义,就是从小的区间推向大的区间。 一般模板 for(int len = 1;len<=n;len++) { for(int j = 1;j+len<=n+1;j++) { int r = j+len - 1; for(int l = j;l<r;l++) { dp[j][r] = m
状压DP
摘要:集合状压DP Doing Homework HDU - 1074 题意: 1:每次给n个作业及其花费时间和截至时间 2:每次做一个作业直到做完才可以换下一个作业 3:对于每一个作业,每超过一天就会减去1分 4:问减去的最小的分数 5:题中的输入顺序是按字典序的 思路: 状态压缩动态规划 在二进制情况
数位DP
摘要:模板题:1082. 数字游戏 题目描述 求整数区间 [L,R][L,R] 内, 不降数 的个数 不降数:数位从高到低呈非下降关系(【例】:123,446) 代码 #include <bits/stdc++.h> using namespace std; typedef long long LL; #
树形DP
摘要:树形 DP,即在树上进行的 DP。 由于树固有的递归性质,树形 DP 一般都是递归进行的。 树的最长路径 题目描述 给定一个含有 n 个节点的 树,以及树中每条边的权值 wedgei。 现需要在树中找出一条路径,使得该路径上所有边的权值之和最大。 思路: 记录以i为根节点的子树中,从子树某个节点到i
UVA11021 Tribles(概率dp)
摘要:题目 题意翻译 题目大意 一开始有kk种生物,这种生物只能活1天,死的时候有p[i]的概率产生i只这种生物(也只能活一天),询问m天内所有生物都死的概率(包括m天前死亡的情况) 输入格式 第一行输入一个整数T,表示数据总数 每一组先输入三个整数n(1<=n<=1000),k(0<=k<=1000),
闫氏DP分析法 学习笔记
摘要:求解的过程 DP问题 == 有限集上的最值问题 DP的两个阶段: 化零为整,寻找共性——状态表示 集合 所谓 化零为整 是指我们对于零星的情况,不是一个一个去枚举,而是每次根据这些零星的情况的某些特性去枚举一类情况(即一个子集) f(i)需要考虑的问题: 属性 表示的是一个怎样的集合? f(i)保存
dp动态规划 背包问题
摘要:学习视频1 学习视频2(灯神) 01背包(每个物品就1个) 理解: 动态转移方程: dp[i][j]=max(dp[i-1][j] , dp[i-1][ j-p[i] ]+m[i]); 代码: #include <iostream> #include<cstring> #include<stdlib