usaco2005专题

bzoj1731/poj3169[Usaco2005 dec]Layout 排队布局

题目链接:bzoj的poj的 题目大意: 有N 头奶牛正在排队,它们的编号为1 到N,约翰要给它们安排合适的排队位置,满足以下条件: • 首先,所有奶牛要站在一条直线上。由于是排队,所以编号小的奶牛要靠前,不能让编号大的奶牛插队。但同一个位置可以容纳多头奶牛,这是因为它们非常苗条的缘故 • 奶牛喜欢和朋友靠得近点。朋友关系有F 对,其中第Ai 头奶牛和第Bi 头奶牛是第i 对朋友,它们的距

1672: [Usaco2005 Dec]Cleaning Shifts 清理牛棚

考虑令f[i]表示至少把前i个点打扫了所需要的最小花费, 那么对于第i个奶牛打扫的即为f[a[i].e] = min(f[a[i].s-1]+a[i].w); 考虑更新了f[a[i].e]实际上也对于前a[i].e个点均有影响,所以还需对f[j]取min j < a[i].e 知道树状数组是可以维护前缀最小值的,那么反转区间,随便维护即可。 c++代码如下: #include<bits/