随笔分类 -  DP

摘要:一、01背包 for(int i=V;i>=c[i];--i){ dp[i]=max(dp[i], dp[i-c[i]]+w[i]) } hdu3466。这个题要考虑dp的无后效性质,简单来说,就是dp与物品排布有关的时候,我们应该选择最优的那一个。如果单独选择 i,j都没有问题的时候。如果先选i再 阅读全文
posted @ 2023-04-16 16:17 John_Ran 阅读(29) 评论(0) 推荐(0) 编辑
摘要:CF 1073E Segment Sum 题意:求[L,R]中,不同数位不超过k个数的和。 题解:很简单的数位dp,dp [i] [j] 表示第i位前面的数字中,前导0之外不同数位的状态为j的数字个数和它们的和(用个pair来存)。然后正常数位dp就行了,特殊处理一下前导0(加状态比较好处理)。 # 阅读全文
posted @ 2020-10-13 16:52 John_Ran 阅读(97) 评论(0) 推荐(0) 编辑
摘要:Gym-102040B 题意:对于每一个十进制数,我们定义逆序对数。如果一个数位在另一个数位之后,并且比前面那个数位大,则逆序对数加1。现在求[L,R]中,每一个数字的逆序对数之和。 题解:dp [i] [j] 表示考虑到第i位,并且填数字j时,当前数位和接下来要填写的数位形成的逆序对数是多少。显然 阅读全文
posted @ 2020-10-13 16:46 John_Ran 阅读(149) 评论(0) 推荐(0) 编辑
摘要:Xor 传送门 题意:对于x属于[1,a],y属于[1,b]。|x-y| ⇐ k,x xor y ⇐ w的x,y的对数。 分析:数位dp,首先是这个绝对值条件要去掉,变成两个条件。y-x+k >= 0 && x-y+k>=0。我们现在按位考虑这个两个限制,会发现这个位(把x-y+k当成一个数)上,会 阅读全文
posted @ 2020-10-09 23:23 John_Ran 阅读(148) 评论(0) 推荐(0) 编辑
摘要:ARC104 D 传送门 题意:给你三个数字:N,K,M(N,K<=100)。对于[1,N]内的每一个数x,你需要解决以下问题:对于[1,N]内的每一个数字,你最多取K个,这样组成的数组的平均值是x。 首先我们需要一个转化:对于其中的一个问题,将[1,N]中的数字写成 -x,-(x-1),-(x-2 阅读全文
posted @ 2020-10-06 15:53 John_Ran 阅读(308) 评论(0) 推荐(0) 编辑
摘要:Pinch Pinch Pinch 传送门 题意:给你一个整数N,定义一次操作为将这个数字切割为一个等差数列,如果有多种方案,只能选择元素最多的方式。切割之后的数据仍然能继续切割,但是每次只能选择一个元素进行切割,问最多能进行多少次操作? 题解:简单dp,首先需要考虑对于一个数字而言,切割得最多的方 阅读全文
posted @ 2020-06-04 15:08 John_Ran 阅读(187) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示