随笔 - 532  文章 - 0  评论 - 3  阅读 - 10867 

随笔分类 -  dp

上一页 1 ··· 5 6 7 8 9 10 下一页
cf543A
摘要:翻译下题目: n个物品,每种物品有无限个,物品体积,现在一共取m个物品,且物品总体积不超V 问方案个数 纯粹的背包dp,没什么说的 #include <iostream> #include <cstring> using namespace std; const int N=503; int mod 阅读全文
posted @ 2022-10-20 20:08 towboat 阅读(21) 评论(0) 推荐(0) 编辑
SP283 NAPTIME-Naptime
摘要:一个环上有n个点,价值 a[i],现在要选择m个点, 其中连续段的第一个元素的价值不算,求总和最大? 先考虑一条链 f[i][j][0/1] ,j 是目前选择了的点的个数, 0/1 当前点i 是否选择 状态转移: f[i][j][0]=max(f[i-1][j][0],f[i-1][j][1]) f 阅读全文
posted @ 2022-10-20 16:56 towboat 阅读(15) 评论(0) 推荐(0) 编辑
luogu 1351
摘要:水题 这里记录个步骤 对某节点x,其子节点为y 求 a[y1]*(a[y2]+a[y3]+ ... +a[yn]) + a[y2]*(a[y1]+a[y3]+...a[yn]) + .... + a[yn]*(a[y1]+a[y2]+...+a[y(n-1)] ) 观察一下,很容易推出 answer 阅读全文
posted @ 2022-10-19 21:58 towboat 阅读(21) 评论(0) 推荐(0) 编辑
最长单调不增子序列
摘要:普通的dp写法 f[i] = max{ f[j] +1 } j<i &&a[i]<=a[j] 复杂度 O(n^2) 单调队列写法 O(nlogn) int n,a[N],f[N],st[N],len; int cmp(int x,int y){ return x>y; } void solve(){ 阅读全文
posted @ 2022-10-19 19:34 towboat 阅读(33) 评论(0) 推荐(0) 编辑
luogu 1586
摘要:四方定理是众所周知的:任意一个正整数n,可以分解为不超过四个整数的平方和 给定的正整数n,统计它能分解的方案总数。注意:25=4^2+3^2 与 3^2+4^2 相同 背包,把每个平方数作为一个物品 直接用背包会重复累加,此时要利用这个定理,f[4][j] #include <iostream> # 阅读全文
posted @ 2022-10-19 16:30 towboat 阅读(15) 评论(0) 推荐(0) 编辑
luogu 1077
摘要:一些不同类型的物品,每种物品有可取个数的上限( a[i] ) 从中挑m个,求方案个数 这是背包问题? 考虑前 i 种物品,f[i][j] 表示方案个数, j 表示第i个物品取多少 f[i][j]+= f[i-1][j-k] f[0][0]=1 #include <iostream> using na 阅读全文
posted @ 2022-10-19 15:06 towboat 阅读(10) 评论(0) 推荐(0) 编辑
luogu 1057
摘要:n个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球,每个同学可以把球传给自己左右的两个同学中的一个(左右任意),当老师再次吹哨子时,传球停止,此时,拿着球没有传出去的那个同学就是败者,要给大家表演一个节目。 有多少种不同的传球方法可以使得从小蛮手里开始传的球,传了m次以后,又 阅读全文
posted @ 2022-10-19 13:32 towboat 阅读(7) 评论(0) 推荐(0) 编辑
cf414b
摘要:1~M 挑数字(可重复), 能组成多少长度为n的合法序列? ( n,k =2000 合法序列: a[i] %a[i-1]==0 f[i][j] += f[i-1][k] , j%k==0 #include <iostream> using namespace std; const int N=200 阅读全文
posted @ 2022-10-19 12:26 towboat 阅读(18) 评论(0) 推荐(0) 编辑
luogu 1018
摘要:数字串分割为m个部分,求乘积最大? 例如有一个数字串:312, 当 N=3,K=1 时会有以下两种分法: 3 * 12 31*2 这时,符合题目要求的结果是: 31 *2 转移方程 在注释里,不解释 以下代码只有80分,AC需要换成高精度(笔者大概是没学过的 #include <iostream> 阅读全文
posted @ 2022-10-18 21:18 towboat 阅读(14) 评论(0) 推荐(0) 编辑
luogu 1049
摘要:有一个箱子容量为 VV,同时有 nn 个物品,每个物品有一个体积。 现在从 nn 个物品中,任取若干个装入箱内(也可以不取),使箱子的剩余空间最小。输出这个最小值。 #include <iostream> #include <vector> #include <cstring> using name 阅读全文
posted @ 2022-10-18 20:33 towboat 阅读(11) 评论(0) 推荐(0) 编辑
状态压缩dp的两个经典问题
摘要:这里的图染色问题 : 用最少的颜色给一个无向图的点染色,且相邻节点颜色不同 f[s] = min{ f[s-s2]+1 } ,s2为s的子集 值得注意集合S 的子集如何枚举? for(j=S; j ;j=(j-1)&S) #include <iostream> #include <vector> u 阅读全文
posted @ 2022-10-18 18:49 towboat 阅读(16) 评论(0) 推荐(0) 编辑
Perfect Service UVA - 1218
摘要:树上的点可以涂成黑色或白色,求最少的黑色点,使得任意白点只和一个黑点相连 白点只和一个黑点相连,所以对于节点x, 不仅考虑 x ,son[x] 的情况,还有 x,father[x] f[x][3] 黑点个数 0: x 为 黑点 1:x为白点,且father[x] 为黑点 2:x 白点,father[ 阅读全文
posted @ 2022-10-18 16:36 towboat 阅读(13) 评论(0) 推荐(0) 编辑
3个经典树上问题
摘要:1.树的最大独立集 任选一个点作为根,有了以下得状态 f[i][0/1] f[i][0] += max(f[y][0], f[y][1] f[i][1] += f[i][0] #include <iostream> #include <vector> using namespace std; con 阅读全文
posted @ 2022-10-18 15:43 towboat 阅读(27) 评论(0) 推荐(0) 编辑
uva 10003
摘要:#include <iostream> #include <cstring> using namespace std ; const int N=60,inf=1<<30; int n,L,a[N],vis[N][N],f[N][N]; int dp(int l,int r){ if(l>=r-1) 阅读全文
posted @ 2022-10-18 15:08 towboat 阅读(12) 评论(0) 推荐(0) 编辑
uva 1025
摘要:f[i][j] 在 i 车站,当前经过的时间 j ,所需最小等待时间 f[i][j]= f[i][j+1] +1; //等待 f[i][j]= min{ f[i-1][j+t[j]] } //向右 f[i][j] =min{ f[i+1][j+t[j-1]] } // 向左 #include <io 阅读全文
posted @ 2022-10-18 14:18 towboat 阅读(13) 评论(0) 推荐(0) 编辑
最大子段和
摘要:(luogu P1115) 方法1 维护前缀和s[i] ,所求的最大和 为 max{ s[j] - s[i] } , i<j 我们枚举j ,即s[j] 确定,此时只需要 s[i] 最小即可 ,于是维护这个最小值 #include <iostream> using namespace std ; co 阅读全文
posted @ 2022-10-15 17:34 towboat 阅读(12) 评论(0) 推荐(0) 编辑
cf#806G
摘要:题目 There are nn chests. The ii-th chest contains aiai coins. You need to open all nn chests in order from chest 11 to chest nn. There are two types of 阅读全文
posted @ 2022-10-13 17:02 towboat 阅读(12) 评论(0) 推荐(0) 编辑
cf820G
摘要:操作:从字符串a中扣除给定的子串b(如hebheof 和 he ,结果 --bheof或heb--of 问直到无法操作时,至少需要几次 #include<iostream> #include <vector> #include <cstring> using namespace std; const 阅读全文
posted @ 2022-10-12 20:31 towboat 阅读(22) 评论(0) 推荐(0) 编辑
cf815C
摘要:题意: 有n件商品,每件有价格c[i],优惠券d[i], 对于i>=2,使用di的条件为:xi的优惠券需要被使用,问初始金钱为b时 最多能买多少件商品? n<=5000 解答 树上背包 f[u][j][0/1] 表示某子树(u)有体积j(分配的物品数目) ,该物品是否选择,所需要的最小金钱 f[u] 阅读全文
posted @ 2022-10-10 17:54 towboat 阅读(22) 评论(0) 推荐(0) 编辑
知识 树上背包
摘要:例子: luogu <选课> 课程有依赖关系形成树状结构,每个节点有价值a[i], 若选择X节点 则必须选择其父节点,最多选m个节点 问能获得的最大价值 f[u][i][j] 结点u,可用体积为j(节点个数),考虑前i个子节点,能获得的最大价值 我们枚举第i个点分配的体积k f[u][i][j]= 阅读全文
posted @ 2022-10-10 16:31 towboat 阅读(16) 评论(0) 推荐(0) 编辑

上一页 1 ··· 5 6 7 8 9 10 下一页
点击右上角即可分享
微信分享提示