
dp
27rabbit
OI I AM COMING
MISS PENGUIN
I LOVE YOU
展开
-
bzoj 1037 [ZJOI2008]生日聚会Party
这是一道非常好的dp题,实在是太好了机房众神犇都说这是一道水题然而我却做了一上午,这可让我这种菜鸡怎么办啊 qwq这个题一看就是dp,但是我第一眼看像是区间dp???这个题要男生与女生的差不超过 k (常数)怎么维护???然后得到神犇的指点说其实可以只维护以 i 为结尾的所有后缀的情况就好啦f[i][j][a][b] 表示 以 i 为结尾的所有后缀中 男生有 j个,男-女最大为a,女-男最大为b原创 2017-10-21 17:38:02 · 172 阅读 · 0 评论 -
bzoj 1010
这是一个大水题斜率优化dp推一推式子#include<bits/stdc++.h> #define lca long long using namespace std; const int MX = 50005 ; lca n,l,p,q[MX]; lca c[MX],dp[MX];double getk(int pos) { int x=q[pos],y=q[pos-1]; re原创 2017-10-19 20:52:38 · 207 阅读 · 0 评论 -
bzoj 1042: [HAOI2008]硬币购物
这是一道好题,值得品味首先先不考虑有限制的情况是一道水题但是一定要记得循环顺序,首先要循环第几种硬币,然后再循环多少钱为什么呢?如果先循环钱,就会导致重复 3 = 2 + 1 , 3 = 1 + 2 然后考虑有限制的情况 容斥一下:答案 = 没有限制 - 第一种硬币突破限制 - 二 - 三 -四 + 一 & 二 ……怎么求突破一种硬币限制呢?只要这一种硬币使用 d[i]+1 个 剩下的 可以随便取(原创 2017-10-21 17:50:52 · 180 阅读 · 0 评论 -
bzoj 1044 木棍分割
这是一个水题然而我却想了一年我好菜啊这个题分为两问第一问随便二分第二份随便 d p 然而简简单单的 d p 会 T 而且 M 所以使用滚动数组解决M的问题然后发现每一个点向前追溯的点是一样的所以可以预处理然后搞一搞前缀和就好啦!#include<bits/stdc++.h> using namespace std; const int MX = 50005 ; const int mod = 10原创 2017-10-23 22:38:08 · 265 阅读 · 0 评论 -
1190: [HNOI2007]梦幻岛宝珠
这是一道很好的DP哦非常值得去做大家都叫它分层背包(其实很好理解啦)就是先按照二进制位分层,然后先在层内简单背包 f [i] [j] 表示 容量第 i 个二进制位为 j 的最大价值 换句话说就是 容量为 j*2^i 的最大价值然后就是把各个层合并 这个时候 f [i] [j] 表示 容量为 j*2^i+(W第i-1位之前) 的最大价值这里要注意: 不是j*2^i还要加上W本身前i-1位然后转移原创 2017-11-01 09:57:59 · 331 阅读 · 0 评论