标签:
bzoj 2197: [Usaco2011 Mar]Tree Decoration
树形dp。。f[i]表示处理完以i为根的子树的最小时间。
因为一个点上可以挂无数个,所以在点i上挂东西的单位花费就是i所在子树里的最小单位花费。。
所以每次求f[i]只要使子树里的数量都满足要求就好了。。i的祖先还要更多的话随时可以选某个节点多挂一些。。
f[i]=sum{f[j]}+mincost[i]*max(need[i]-sum{need[j]},0)。。(j是i的儿子,mincost[i]表示子树i里的最小花费,need[i]表示i这颗子树需要的最少数量)
bzoj 2097: [Usaco2010 Dec]Exercise 奶牛健美操
没思路跑去看题解系列。。。二分答案。。
假设二分出来的答案是mid,那么对于每颗子树,设根节点为i,那么删边后子树的直径不能超过mid。
子树内的路径分两种情况,一种是经过i的,另一种是不经过i的。不经过i的显然可以递归i的子节点去删边,删完边后,如果i的任意两个儿子可以通过i凑成一条超过mid的路径的话,就贪心地把i和对长度贡献较大的孩子之间的连边删掉。
bzoj 1694: [Usaco2007 Demo]Grazing on the Run
又是英文题面+双倍经验= =同bzoj1742。。。。双倍经验==>双倍#1。。233
bzoj 2501: [usaco2010 Oct]Soda Machine
区间加后查询最大值。。写了离散化后二分。。其实离散化姿势正确的话是不用二分找出区间左右端点位置的TAT。
bzoj 1915: [Usaco2010 Open]奶牛的跳格子游戏
dp+单调队列优化 http://www.cnblogs.com/czllgzmzl/p/5084120.html
bzoj 1729: [Usaco2005 dec]Cow Patterns 牛的模式匹配
正解似乎是kmp。。。具体见网上题解
然而我偷懒写了hash= =。。。结果卧槽又长又慢
如何判断网上题解挺详细的。。。然而事实告诉我们其实并不用那么严格。。选几个类似(并好维护些)的指标(比方说轮廓啊什么的)。。符合的话就再随机几个点确定一下是不是真的全都符合= =。。。。这样大概就可以了吧
真相是看网上题解时几个字看错TAT。。结果拍了半天。。最后直接再rand几个数判断= =。。写了4个hashTAT
bzoj 1780: [Usaco2010 Feb]corral 覆盖牛棚
首先把被完全覆盖的围栏去掉,剩下的按左端点升序排序。那么右端点肯定也是升序的了。。然后计算出每段围栏,它接下去一段围栏可达到的最远距离。
枚举起点,贪心地一段一段接下去就可得到该起点的最优解。
然而这样会T。。我们找出一圈围栏后,把这些围栏都指向刚好跨过一圈的那条围栏就可以避免同个解不同起点的重复计算了(看了kpm代码才会的QAQ)。
大概是#1吧。。。
标签:
原文地址:http://www.cnblogs.com/czllgzmzl/p/5085464.html