dp&递推
文章平均质量分 80
Zeyu_King
蒟蒻代码风格巨丑,神犇勿喷:)
展开
-
codeforces 295D Greg and Caves
蒟蒻再一次被虐傻了。。。。。原先yy了一个dp方案:考虑上半段(一个正立的三角),f[i][j]表示从从小往大放,现在的底为i,高为j的方案数。再从搞一个下半段的计数h[i][j],表示目前高为j,接下来放的底大小为i(当前的严格小于i)的方案数。可以发现,f[i][j]的计算很容易用O(n^3)内的时间内得到,h也很容易由f算得。(利用前缀和很容易把f的计算优化到O(n^2))只原创 2015-03-03 17:25:29 · 947 阅读 · 0 评论 -
codeforces 261E Maxim and Calculator
做此题会有一种误区:一个数的最优方案一定是不断地将此数的质因子乘上去。反例很容易就找到了:20=2^2*5^1。用上面的办法得到的步数应是2+1+5=8,而事实上只需要7就够了——不断把b加到5,在b=4或5时乘到a上,一共需要1+1+5=7这怎么做啊?用f[i]表示得到i所需要的最少步数。本来我想先计算j后来膜拜了别人的程序才发现这个递推方式比较奇(you)葩(mei)。 从原创 2015-03-23 22:03:48 · 900 阅读 · 0 评论 -
[bzoj 1049] HAOI2006数字序列
这题放了很久了,这次终于下定决心切掉他!第一问很好处理,把值减去标作为新值,求最长不下降序列即可。第二问,有一个很好的性质。还是处理第一问中的新值,发现最优解中两个不变点i,j之间的数都是小于a[i]或大于a[j],并且修改之后存在一个k使得i~k个全为a[i],后面的全为a[j]。这个性质很好利用,借鉴Mato的blog里的做法可以水(随机数据。。。。。)//Mato用理论O原创 2015-04-13 11:14:02 · 886 阅读 · 0 评论 -
APIO2014题解
话说就要APIO2015了,我才把2014的题做完。。。。1、回文串当时考场上据说有很多人用Manacher+其他各种字符串利器虐了。。。但是现在我们有了回文树这种裸题,这不是水吗。。。。。#include #include #include using namespace std;typedef long long LL;const int Maxn原创 2015-04-24 16:36:44 · 1823 阅读 · 0 评论 -
除草(4.6~4.11)
1、 加特技水题,树上背包dp。2、花可以推出第一步答案为(n!)^2的约数个数第二步其实要求一个long long范围内的质因数分解,Pollard_rho解决。3、连电线任意重连一条树边,求修改后树直径的最小值和修改方案。比较繁琐的树dp。大概就是想办法搞出子树里的直径,子树外的直径,那么割去子树连向外的边,添边的最优方案就是加在两条直径的中间。开了20来个数原创 2015-04-13 23:08:47 · 653 阅读 · 0 评论 -
CDQ分治优化DP
昨天被学军的公开赛虐傻了,才发现自己还不会用CDQ优化DP,吓得赶紧去填坑。。。普通的CDQ就是对二分操作,计算前半部分的插入对后半部分的询问的影响。那么如何用CDQ优化DP呢?看一道例题:NOI2007 cash很容易推出平方的dp方程:f[i] = max(f[i-1], f[j]/(R[j]*A[j]+B[j])*R[j]*A[i] + f[j]/(R[j]*A[j]原创 2015-06-28 22:10:51 · 1604 阅读 · 0 评论 -
除草(3.30~4.4)
//以下所有代码都可在我的代码片里找到1、travel基本把树剖忘光了。。。注意到b树上的点至多对应a树上的一个点,询问要求b树上的一条路径对应a树上几条路径。简单的说就是把树上的路径剖成logn段,每段我们都可以利用主席树对每段查询即可。2、弗洛伊德的复仇可以看到如果所有的边都满足ai>bi(应该是优惠吧),那么一定存在最优策略使得所有的货物都应该是选择一条路径来运输。原创 2015-04-05 15:25:14 · 731 阅读 · 0 评论 -
XJOI NOI2015训练题7 题解
T1、原本以为是水题的,但是题目里有这么一句话”不模1e9+7“。。。。可以注意到上下左右都要求单调增,那么状态就很好确定了f[i][j]表示第一行放了前i个格子,第二行放了前j个格子,并且这些数都是小于等于i+j的转义很好写:f[i][j]可以推给f[i+1][j]和f[i][j+1]。需要时时保证i>j另外注意此处格子是否可放。由于不取模,需要用高精。但是实现只有0.2原创 2015-06-13 21:58:19 · 995 阅读 · 1 评论