dp及优化
Sakai_Masato
这个作者很懒,什么都没留下…
展开
-
[BZOJ2286][SDOI2011]消耗战
设dp[i]dp[i]表示ii所在的子树里面所有的询问点与ii不连通的最小代价,那么dp[i]=∑min(dp[j],w[i][j]),j∈son[i]dp[i]=\sum min(dp[j],w[i][j]),j\in son[i],直接dp会TLE,发现询问的点数很少,那么建立虚树就可以了,一般虚树的题都很明显的。。 虚树就是关键点以及它们两两LCA所形成的树。 我写的常数好大QAQ。#in原创 2016-03-03 14:36:57 · 548 阅读 · 0 评论 -
树形dp易错点
今天搞了差不多一天的树形dp,题也没太做多少,发现自己这一块还有很不足的地方,知识一点也掌握得不牢固。 写树形dp的时候要注意状态的表示和循环变量的枚举顺序,否则会出大问题! 具体地来说,树形dp一般的像背包那样缩掉了一维,所以应该逆序枚举,如果顺序实在是搞不清楚的话建议开一个临时数组先记着,再赋回去。 这里面一定要注意每一层循环的范围和方向!!原创 2016-01-31 20:48:10 · 313 阅读 · 0 评论 -
[BZOJ3672][NOI2014]购票 树分治斜率优化
废话不多说,直接上方程。 dp[i]=min(dp[j]+(dis[i]−dis[j])×p[i]+q[i])dp[i]=min(dp[j]+(dis[i]-dis[j])\times p[i]+q[i]) 考虑xx是yy的儿子,且xx比yy优: dp[x]−dis[x]∗p[i]<dp[y]−dis[y]∗p[i]dp[x]-dis[x]*p[i]<dp[y]-dis[y]*p[i] 设T原创 2016-02-21 14:04:00 · 704 阅读 · 0 评论 -
[BZOJ1010][HNOI2008]玩具装箱[BZOJ1911][APIO2010]特别行动队[BZOJ1492][NOI2007]货币兑换 斜率优化
今天因为刷不动ydc的题,只能搞搞LCT和斜率优化,上午搞了LCT,下午搞斜率优化,其实我本来是想看冬令营的课件的,发现正好有斜率优化,也写得很好。玩具装箱直接上方程好了。 设dp[i]dp[i]表示前ii个玩具的答案,记s[i]s[i]为物品前缀和,那么: dp[i]=min(dp[j]+(i−j+s[i]−s[j]−L)2),(j<i)dp[i]=min(dp[j]+(i-j+s[i]-s[原创 2016-02-16 20:45:50 · 613 阅读 · 0 评论 -
[APIO2015]Bali Sculptures
看到这种求位运算的问题一定要想直接对答案贪心啊,从高位枚举到低位,设当前的位为pos,pos之前贪心得到的答案为ans。 现在的问题就是能否找到一种方案,使得pos这一位为0,而且满足这种方案算出来的答案的前若干位与ans相同。 考虑设f[i][j]表示前i个数,分j份能否满足条件,0为满足,若存在一个k使得f[k][j−1]==0,(s[i]−s[k])and(1<<pos)==0,(((an原创 2016-05-02 20:28:08 · 682 阅读 · 1 评论 -
[BZOJ1003][ZJOI2006]货物运输
SPFA处理出i天到j天路线不变的最小值,设f[i]表示1到i天的最小值,枚举改变路线的那一天转移即可。#include<cstdio> #include<cstdlib> #include<cstring> #include<algorithm> #include<iostream> #include<cassert> #include<map> #include<climits> #includ原创 2016-05-04 22:02:26 · 449 阅读 · 0 评论 -
[6-7]考试总结
年度最佳牛农给你一个字符串,每次从串首或串尾拿出一个到一个新字符串的队尾,求字典序最小的串。 若队首队尾不一样直接贪心,否则你枚举队首还是队尾,看看谁更优即可。手风琴与班卓琴约翰的2N(3<=N<=1000)只奶牛正打算举办一场音乐会来吸收资金。其中,N只奶牛是手风琴手,而另N只奶牛是班卓琴手。每个手风琴手有一个天才指数Ai(0<=Ai<=1000),同样一个班卓琴手有一个天才指数Bi(0<=Bi原创 2016-06-10 21:36:34 · 506 阅读 · 0 评论