一般动规与递推
DraZxlNDdt
这个作者很懒,什么都没留下…
展开
-
bzoj2442(单调队列优化)
我们很容易想到nk的做法: 定义f[i]为前i个数这样分的方法 那么转移为f[i]=max(f[j−2]+sum[j][i]) (i−k+1<=j<=i)f[i] = max (f[j - 2] + sum[j][i])\ (i - k + 1 <= j <= i) 改成前缀和f[i]=max(f[j−2]+sum[i]−sum[j−1]) (i−k+1<=j<=i)f[i] = max (原创 2016-08-23 11:40:57 · 853 阅读 · 0 评论 -
[bzoj3174][Tjoi2013]拯救小矮人
DP+贪心前言说实话,我感觉网上大多数文章讲这篇都是在口胡,我发现znber同学的证明也是明显错误的(也许是我太蒻了).但有幸的是我遇上了这篇文章http://blog.csdn.net/commonc/article/details/51693992 他跨了一年,做出了这道题,心疼QAQ。但我觉得他这篇还是没有多详细,搜索引擎也不容易先搜到他,于是就写了这篇辣鸡题解QAQ。题意我一开始一直纠结于原创 2016-11-16 07:53:36 · 5336 阅读 · 0 评论 -
bzoj2302: [HAOI2011]Problem c
bzoj2302: [HAOI2011]Problem cOI题有三种从一般到特殊,从暴力到优化,换角度思考 −WerkeyTom_FTD-_{WerkeyTom\_FTD} 这道题让我认识到了从题目到充要条件的转换这种解题思路 这道题我们可以看出他的充要条件为 ∀j,∑ni=1[ai>=j]<=n−j+1\forall j, \sum_{i=1}^n [a_{i}>=j ] <= n -原创 2017-03-08 12:24:05 · 4824 阅读 · 1 评论 -
bzoj3233 [Ahoi2013]找硬币
a[i]a[i]表示第i个数是第i-1个数的多少倍 a[1]=1 那么第i个数b[i]=∑ij=1a[j]b[i]=\sum_{j=1}^{i}a[j] 那么对于一个价格为n的物品第ii个数用的次数nb[i]%a[i+1]\frac {n} {b[i]} \% a[i+1]。 所以我们可以考虑dp,f[i]表示最后一个数为,然后除了i以外前面的数的最小的硬币数量是多少.#include<cst原创 2017-03-08 16:57:17 · 4752 阅读 · 1 评论 -
51nod1376 最长递增子序列的数量
这道题很sb,但是绝大多数人是用了高级数据结构的,我这里介绍一种(自己yy的)不需要高级数据结构的方法。这道题不需要高级数据结构,考虑一开始的二分的方法,当我们们做到i时,我们维护的这个单调的序列的第j个位置表示的是 以min{A[x]},A[x]为原序列,其中以x结尾的LIS的长度为j.考虑在这个单调序列的每一个位置上开一个vector,表示出所有的x,容易发现,这个vector中x的A是单调不原创 2017-04-11 20:05:25 · 4826 阅读 · 0 评论