随笔分类 -  动态规划 背包DP

摘要:【题目】 " 6396. 「THUPC2018」弗雷兹的玩具商店 / Toyshop" 【题意】给定一个长度为n的物品序列,每个物品有价值、不超过m的重量。要求支持以下三种操作:1.物品价值区间加减,2.物品重量区间加(超过m部分取模),3.区间物品求解容量为m的完全背包数组。$n \leq 2 1 阅读全文
posted @ 2018-05-23 16:19 ONION_CYC 阅读(322) 评论(0) 推荐(0)
摘要:【题目】 " 6395. 「THUPC2018」城市地铁规划 / City" 【题意】给定n个点要求构造一棵树,每个点的价值是一个关于点度的k次多项式,系数均为给定的$a_0,...a_k$,求最大价值。$n \leq 3000,k \leq 10$。 【算法】背包DP+Prufer序 首先每个点度 阅读全文
posted @ 2018-05-17 20:13 ONION_CYC 阅读(481) 评论(0) 推荐(0)
摘要:【题目】#2124. 「HAOI2015」树上染色 【题意】给定n个点的带边权树,要求将k个点染成黑色,使得 [ 黑点的两两距离和+白点的两两距离和 ] 最大。n<=2000。 【算法】树上背包 【题解】设f[i][j]表示子树i中有j个黑点对答案的贡献(包括点 i 到父亲的边 p ),由于边p的贡 阅读全文
posted @ 2018-03-13 09:24 ONION_CYC 阅读(311) 评论(0) 推荐(0)
摘要:【题意】n个人,每个人有价值ai和代价bi和一个依赖对象ri<i,选择 i 时 ri 也必须选择(ri=0时不依赖),求选择k个人使得Σai/Σbi最大。n<=2500,ai,bi<=1e4。 【算法】01分数规划+树上背包 【题解】首先二分答案ans,根据01分数规划赋新的权值ci=ai-ans* 阅读全文
posted @ 2018-03-12 20:20 ONION_CYC 阅读(316) 评论(0) 推荐(0)
摘要:【题意】给定s个股票和d天,给出价格矩阵s*d,每天可以买入或卖出整数倍股票,初始资金m,求最大利益。m<=200000,s<=50,d<=10。 【算法】完全背包 【题解】关键在于转化:第一天买入-第三天卖出,相当于,第一天买入-第二天卖出-第二天买入-第三天卖出。那么买卖股票就变成相邻两天的事情 阅读全文
posted @ 2017-09-27 07:02 ONION_CYC 阅读(226) 评论(0) 推荐(0)
摘要:【算法】DP 【题解】 如果每个排列算一种,则令f[i]表示凑成面值为i的方案数,容易推出f[i]+=f[i-a[j]]。 现在是每个组合才算一种,令f[i][j]第二维表示只使用前j种面值,f[i][j]+=f[i-a[j][k],k=0~j,这样最终算出来的方案就是按一定顺序的,不会重复计算。 阅读全文
posted @ 2017-08-30 16:21 ONION_CYC 阅读(238) 评论(0) 推荐(0)
摘要:【题意】给定一叠n张扑克牌和各自的ai,bi。每次可以从最上面拿走连续atop张并获得btop的价值,或是把top放到最底,求最大价值。 【算法】背包DP 【题解】本题最大的特点:atop的需求与牌的顺序无关,也即是说可以将拿走连续atop张视为拿走atop张,对于你连续的牌中你不想拿走的只需要找机 阅读全文
posted @ 2017-08-22 18:28 ONION_CYC 阅读(291) 评论(0) 推荐(0)
摘要:【算法】背包DP 【题解】f[j]=(f[j-w[i]]+v[i]) 记得倒序(一个物品只能取一次) #include<cstdio> #include<algorithm> #include<cstring> using namespace std; const int maxn=10010; i 阅读全文
posted @ 2017-06-01 18:38 ONION_CYC 阅读(181) 评论(0) 推荐(0)
摘要:原题目:悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 【算法】多重背包(有限背包) 动态规划 【题解】http://blog.csdn.net/acdreamers/article/details/8563283 优化:若物品数量(num[i])*物品重量(w[i])>背包容量(m),就相当于 阅读全文
posted @ 2017-02-15 18:48 ONION_CYC 阅读(526) 评论(0) 推荐(0)
摘要:【题意】将n划分成不同正整数的和的方案数。 【算法】动态规划 【题解】 暴力:f[i][j]:只用前1..i的数字,总和为j的方案数 本质上是01背包,前i个物体,总质量为j的方案数 f[i][j]=f[i-1][j]+f[i-1][j-i] 复杂度O(n^2) 优化: 我们发现,因为要求数字不同, 阅读全文
posted @ 2017-01-18 10:57 ONION_CYC 阅读(550) 评论(0) 推荐(0)
摘要:【动态规划杂记】状态+转移 参考:夜深人静写算法(二) - 动态规划 核心:划分阶段-状态表示-状态转移方程。 复杂度:状态数O(n^t),转移O(n^e),则称为tD/eD问题。 1.最优化问题和方案数问题常考虑DP,特定数问题不考虑DP。 2.断层思想:划分状态,从计算过的状态去答案,这就是无后 阅读全文
posted @ 2016-11-29 14:17 ONION_CYC 阅读(1937) 评论(0) 推荐(1)
摘要:【算法】 【算法】网络流 【算法】树 【算法】数学 ————【专题】生成树计数(矩阵树定理) ————【专题】计数问题(排列组合,容斥原理,卡特兰数) ————【算法专题】卡特兰数(计数数列) ————【专题】数论 ————【专题】概率和期望 【算法】动态规划 【算法】数据结构 ————【专题】平衡 阅读全文
posted @ 2016-08-10 21:08 ONION_CYC 阅读(2144) 评论(0) 推荐(6)
摘要:Day1 T1(暴力):大水题 #include<cstdio> const int ok[5][5]={ 0,0,1,1,0, 1,0,0,1,0, 0,1,0,0,1, 0,0,1,0,1, 1,1,0,0,0, }; int a[210],b[210]; int main() { int n, 阅读全文
posted @ 2016-08-10 08:20 ONION_CYC 阅读(431) 评论(0) 推荐(2)