
dp
lzk_1049668876
stay hungry stay foolish
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【codeforces E. Lunar New Year and Red Envelopes】【贪心】【优先队列维护】【dp】【好题】
题意:有n个红包,每个红包可以在[si,ti]的时间内拾起,拾起后获得wi元,但是到di这个时刻都不能再获取其他红包a非常贪心,他在每一时刻,如果这个时刻可以拾起红包,它会拾起金额最大的,如果同时有多个金额最大的他会拾起di最大的有m次干扰他的机会,每次干扰他使得他在某个时刻不能拾起红包他的女儿可以如果他的女红采用最优操作,他最少获得多少金钱 思路:我们发现在某个时...原创 2019-02-02 23:33:28 · 167 阅读 · 0 评论 -
【codeforces 1105C】【dp】【给定n,l,r,有多少个序列,其和能被3整除】
https://codeforces.com/problemset/problem/1105/C【题意】给定n,l,r,有多少个序列,其和能被3整除【思路】dp[i][j]表示前i个数,模为j的方案数 l,r很大,不能暴力,思考一下根源如何优化,就是l-r之间有很多数都是能被3整除的,其实是可以一起算的 求[l,r]中能被k除余数...原创 2019-01-22 09:45:52 · 1954 阅读 · 1 评论 -
【2017ccpc final G - Alice’s Stamps HDU - 6249 】【dp】【01背包变形】【取k个区间使得覆盖范围最大】
【链接】acm.hdu.edu.cn/showproblem.php?pid=6249【题意】给你m个区间,要求你选出k个区间,使得区间并的覆盖范围最大1≤T≤1001≤K≤M1≤N,M≤20001≤Li≤Ri≤N【思路】一开始我们得出错误的dp转移:先按右端点排序,dp[i][j]表示前i个区间集合,当前已经选了j个的最大的覆盖范围,但是显然需要再枚举是哪个右端...原创 2018-10-18 17:56:02 · 406 阅读 · 0 评论 -
【bzoj 3687 简单题】【bitset的dp背包优化】【bitset的妙用】
【题意】求n个数的所有子集的和的异或值【分析】 要求计算子集算术和的异或和。首先我们设dp[i]表示由这n个数能有多少种方案组成i,显然这样dp[1~sum]就将所有的子集和统计完了,那么计算的时候只要判断(dp[i]&1)就有ans^=i。这样的复杂度是sum*n,对于n=10^3,sum=2*10^6是处理不了的。那我们回过头看看这个dp决策,假设前i个数组成的是dp...原创 2018-10-06 20:19:07 · 413 阅读 · 0 评论 -
【hihocoder - Matrix HihoCoder - 1580 】【2017北京icpc网络赛 】【思维】【最大子矩阵和变式】【dp】
【链接】https://vjudge.net/contest/255189#problem/C【题意】给你一个矩阵,问去掉子矩阵中任意一个元素的矩阵的最大和【分析】最大子矩阵和的变式,首先,给定一个矩阵求把一个元素改变成另一个元素的最大和,肯定是去掉最小的元素。然后dp一下就OK了。用矩阵的上下界来划分阶段。dp[i][0]表示上下界分别为l,r,指针停留到i,并且子矩...原创 2018-09-22 08:35:30 · 253 阅读 · 0 评论 -
【codeforces 1097D Makoto and a Blackboard】【*2200】【dp】【数论】【积性函数】
https://codeforces.com/problemset/problem/1097/D【题意】给定一个数n,可以进行k次操作,每次操作将数变成它的因子,问期望是多少【思路】补充:为什么是积性函数呢?,类似于打表吧。。会发现f(6)=f(2)*f(3)哈!又知道一种找规律的方法!!!【代码】#include<bits/stdc++.h>usi...原创 2019-02-16 18:24:54 · 356 阅读 · 1 评论 -
【codeforces 1110D Jongmah 】【思维】【dp】
【题意】给n个数字,数字的范围为m,连续的三个数字或者三个相同的数字可以组成一个tripe,每个数字只能属于一个tripe,问最多能组成多少个tripe ? https://codeforces.com/problemset/problem/1110/D【思路】因为出三个顺子和出三个刻子对答案的贡献是一样的,因此不妨假设以每种牌为开头的顺子都不超过2个,那么就可以做费用提前计算的...原创 2019-02-15 22:26:12 · 572 阅读 · 0 评论 -
【JAG Autumn 2014, MIPT2014 G 2595】(前缀和优化组合数dp)
链接:http://opentrains.snarknews.info/~ejudge/sn_sh.cgi?data=result_team&sid=b2c98fc49b3509f3题意:有n块饼干,明天吃不多于x块,问在d天之前吃完的方法数1<=n<=20001<=d<=1e121<=x<=2000分析:观察数据,发现d很小,那...原创 2018-08-17 20:18:40 · 212 阅读 · 0 评论 -
【poj3171 Cleaning Shifts】【数据结构优化dp】【最少区间覆盖代价】
【链接】http://poj.org/problem?id=3171【题意】有N个贴纸,可覆盖范围为[ai,bi],售价ci,问要覆盖L,R,区间,最少需要多少代价【分析】dp[i]代表覆盖区间[L,i]的最小花费。将所有贴纸按右端点排序,设当前贴纸为[ai,bi],价格ci,状态转移方程为:dp[i]=min{f[x]}+ci (ai-1<=x<bi)【...原创 2018-08-27 13:12:37 · 383 阅读 · 0 评论 -
hdu1520-A - Anniversary party (树形dp经典入门)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=1520题意:给你一 棵关系树,让你从中选择若干个人,这些人之间不能有直接的上下级关系,要求最后的到的权值最大思路:树形dp,比较好理解代码:#include<cstdio>#include<queue>#include<vector>#include<algo...原创 2018-06-06 18:57:30 · 488 阅读 · 0 评论 -
POJ 2955 Brackets (区间dp入门)
题意: 求一字符串括号序列的最大匹配个数。思路: 定义dp[i][j]dp[i][j]为从i到j的最大匹配个数,若str[i]和str[j]相匹配,则dp[i][j]=dp[i+1][j−1]+2dp[i][j]=dp[i+1][j−1]+2,枚举k为区间i~j的分段点,状态转移方程为: dp[s][e]=max(dp[s][e],dp[s][k]+dp[k+1][e]);代码:dp[i]...原创 2018-06-06 09:56:49 · 230 阅读 · 0 评论 -
51nod1021石子归并(区间dp经典入门)
题目:N堆石子摆成一条线。现要将石子有次序地合并成一堆。规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的代价。计算将N堆石子合并成一堆的最小代价。思路:区间dp经典入门代码:#include<cstdio>#include<algorithm>using namespace std;const int maxn=1006;int a[m...原创 2018-06-05 21:17:27 · 577 阅读 · 0 评论 -
POJ 1651 Multiplication Puzzle(区间dp入门)
The goal is to take cards in such order as to minimize the total number of scored points.For example, if cards in the row contain numbers 10 1 50 20 5, player might take a card with 1, then 20 and 50,...原创 2018-06-05 20:45:05 · 143 阅读 · 0 评论 -
poj3254 (压状dp入门)
题目大意:农夫有一块地,被划分为m行n列大小相等的格子,其中一些格子是可以放牧的(用1标记),农夫可以在这些格子里放牛,其他格子则不能放牛(用0标记),并且要求不可以使相邻格子都有牛。现在输入数据给出这块地的大小及可否放牧的情况,求该农夫有多少种放牧方案可以选择(注意:任何格子都不放也是一种选择,不要忘记考虑!解题思路:以样例数据第一行为例,三个格子都可以放牧,即每个格子都可以选择放,或不放。再考...原创 2018-06-05 20:00:17 · 344 阅读 · 0 评论 -
HDU - 2089 不要62 【数位DP】
https://blog.youkuaiyun.com/dup4plz/article/details/79944526转载 2018-05-24 16:13:17 · 127 阅读 · 0 评论 -
Codeforces 922E Birds (DP)
http://codeforces.com/problemset/problem/922/E题目大意:有n棵树,每棵树Ci个鸟,买一个花费Costi元。最开始钱包容量和钱数都是w元,且买一个鸟钱包容量增加一个定值。现在按顺序从1号树走到n号树,每换一棵树多出来x元,最多买多少鸟?思路:明显的一个DP,而且题目中n的范围为1000,很明显是一个二维dp,且容易看出现在走到第i棵树可以作为DP的一维。...原创 2018-05-16 20:07:01 · 261 阅读 · 0 评论 -
hdu4826-Labyrinth(dp)
本来是想学习一下双向dp的,然后搜到了这题,刚开始看到这题直观感觉是搜索,但是DFS==TLE,BFS+优先队列==Wa。后来想到不能往右走这个重要点,那就用dp走!还是要好好学习啊思路:走法有三种,无非就是从当前点的下边过来,当前点的上边下来,当前点的左边过来。对于dp数组我们可以开成三维的。dp【i】【j】【k】表示在点(i,j)处从k方向过来的最大值。对于K,0<=K<=2;我们...原创 2018-05-15 15:23:48 · 247 阅读 · 0 评论 -
CodeForces - 767C Garland (树形dp经典入门,dfs实现)
链接: http://codeforces.com/problemset/problem/767/C题意:每颗树有一个权值,问如何分子树能把它分成相等权重的三部分思路:sum求和,只有sum是能够被3整除的才能被被分。然后从下到上dfs出每个结点的子树和(包含自己),bfs后通过两个flag,来记录是否能够分成相等的3部分:(找到一部分,优先用flag1表示)1.如果flag1=0并且当前遍...原创 2018-06-06 19:53:10 · 745 阅读 · 2 评论 -
hdu4699(对顶栈模拟+简单dp)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=4699题意:简而言之,有5种操作: I在光标右边插入一个数 D删除光标左边的数 , L将光标移动最左边 R将光标移动到最右边 Q k 询问k位置以前的最大前缀和思路:定义两个栈,一个从前开始,一个从后开始,二者加起来就是整个数列。至于最大...原创 2018-05-31 23:03:11 · 735 阅读 · 0 评论 -
poj1141括号匹配(区间dp+递归打印路径)
题目描述:给出一串由‘(‘)’‘ [ ' ' ] '组成的串,让你输出添加最少括号之后使得括号匹配的串。思路:i-j表示的是一条序列的开始和结束,dp[ i ][ j ]表示子串s[ i~j ] 需要添加的数量。思想是不断分割小区间,当出现(X)时,应该转移到x,即从dp(i,j)转移到dp(i+1,j-1)如果为单个字符,则dp[ i ][ j ] = 1;(i == j) 打印:算出最优的地方...原创 2018-06-08 18:21:13 · 289 阅读 · 0 评论 -
【2018ccpc区域赛网络赛】【hdu6447 YJJ's Salesman】【dp+离散化+树状数组/线段树优化】
链接:http://acm.hdu.edu.cn/showproblem.php?pid=6447分析:二维坐标排序,x->大,y->小,由于我们每次走必须x,y均变大,那么相当于只要考虑排序后的y的值。从左往右考虑y,dp[i]=max(dp[j])+val[i](i表示第i个点),由于y的数据范围为1e9,需要离散化,然后用树状数组维护求最大。代码:#pragma...原创 2018-08-26 10:31:13 · 411 阅读 · 0 评论 -
[hdu6391 多校20180813 Lord Li's problem](组合数学+dp)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=6391题意:根据异或的性质,X_0⊕X_1⊕X_2⊕X_3⊕…..⊕X_(M-1)=S⊕T 计算出S⊕T中一共有cnt个1,将这个二进制数标准化, 使它成为前面N-cnt个0,后cnt个1的二进制数,答案保持不变,问题变为:用K个N位且有3个1的不同二进制数进行 异或,最终得到前面N-cnt个0,后面c...原创 2019-01-27 17:25:52 · 300 阅读 · 0 评论 -
【hdu2089不要62】(数位dp)
http://acm.hdu.edu.cn/showproblem.php?pid=2089题意:求区间[n,m]中不是不含4或者62的数的个数代码实现(记忆化+dfs):#pragma warning(disable:4996)#include<algorithm>#include<cstdio>#include<string>#incl...原创 2018-08-08 09:25:38 · 227 阅读 · 0 评论 -
线性dp的简单总结
线性dp:在线性空间上的递推——LIS问题:问题描述:最长上升子序列。给定一个长度为n的数列a,求数值单调递增的子序列的长度最长是多少状态表示:dp[i]表示以a[i]为结尾的“最大上升子序列长度”阶段划分:子序列的结尾位置转移方程:dp[i]=max{1+dp[j]}(0<=j<i,a[j]<a[i])边界:dp[0]=0;目标:max{dp[i]}(1<=i<=n...原创 2018-07-04 09:30:03 · 2477 阅读 · 0 评论 -
CodeForces - 940E Cashback (DP+思维模型)
题意:给你长度为n的数列,一段序列的价值是,所有数的总和-最小的len/c的数的和,求如何分割数列,使得答案总和最小。分析:一开始看到向下取整不外乎两种情况:一是用计算机处理,那么表明用暴力,emmm好像不能暴力啊,前面的分割对后面的分割有影响应该是dp,啊,所以这种方法应该不行,二是其中蕴涵着贪心原理:然后仔细想了一下,如果一段长度为2*c的区间段,那么c+c肯定比2c来的优,那么我们现在考虑x...原创 2018-05-19 10:20:43 · 328 阅读 · 0 评论