背包dp
文章平均质量分 83
alpc_qleonardo
这个作者很懒,什么都没留下…
展开
-
HDU 5534 Partial Tree ACM/ICPC 2015 Changchun(完全背包)
有n个节点的树,但是还没有连边,现在要你去连边。然后对于一棵树,它的权值的计算与每个点的度有关,如果某个点的度是i,那么这个点的权值贡献就是f(i),其中f(1)~f(n-1)已经给出,然后问最后权值最大的树权值是多少。 看到这题的时候,我就感觉,不管怎么建树,只要能够保证每个点的度至少为一,那么总是存在一棵树满足你的度数分配要求。换句话说,我们要做的只是把所有的度分配下去,而且分配与点无关,即把度分为n个部分,每个部分不能为0。n-1条边就对应2n-2个度。 知道了,度数可原创 2017-09-08 09:05:37 · 286 阅读 · 0 评论 -
HDU 5445 Food Problem ACM/ICPC 2015 Changchun Online(二进制优化多重背包)
当时读题的时候就感觉这题很明显的多重背包,但是感觉条件好多就不敢想…… 其实,这个只要把问题拆成两个部分就行了。题意就是,每个点心有一定的能量、空间和数量,然后你的要求是使得总的大于p,然后你可以租一些车来运送这些点心,不同的车有不同的价格、容量和数量,问你在满足能量总数大于p的情况下,最小要花费多少。 确实如果看成一个整体去考虑,确实不好dp。于是拆成两个独立的问题,首先,总能量大于p最少需要多少空间,然后对于这个最少的空间,我又需要花费最小多少代价能够把这些东西装完。原创 2017-09-06 20:53:14 · 455 阅读 · 0 评论 -
CodeForces 981E Bookshelves(dp+思维)
大致题意:给你q个操作和一个长度为n的序列,初始状态序列全为0。每个操作是对区间[l,r]增加v。然后,现在你可以只选择这q个操作中的任意几个进行操作,问你操作完毕之后整个序列中最大值是否可以是1~n,输出可以的数字。也就是说,对于每一个数字i,看能否找到一个操作的子集,使得操作完毕后区间最大值为i。 可以说刚读完题的时候没有任何想法,完全不知道怎么下手,但是数据范围给了我们提示,n、q分别是1e4级别,那么可以考虑O(nq)的算法。首先,对于询问,我们按照操作左端点l进行排序。其次,再原创 2018-05-28 23:22:48 · 379 阅读 · 0 评论 -
HDU 6360 2018HDU多校赛第五场 kaleidoscope(Polya计数+dp)
大致题意:一个菱形六面体,有60个面,然后每个面进行染色,然后要求是第i种颜色不少于c[i]个,问有多少个本质不同的染色方案。看到这个菱形六面体,60个面,不要自闭……其实仔细想想这个图形也很简单。我们把每一个凸出来的菱形顶点相连,我们发现会变成一个十二面体。正如题目种所说,菱形六面体是十二面体的每个面中点往中间收缩形成的。因此,这个60面看起来吓人,但其实就是一个十二面体。所以对于十二面体,我们同样考虑用polya计数。根据套路,首先计算定理和置换数,然后计算每一个置换的循环节,还有每一类置换群对应的循环原创 2018-08-07 21:27:28 · 613 阅读 · 0 评论