[USACO13MAR]牛跑The Cow Run
区间Dp
题解:
蓝书上有道修长城的题目和这个类似啊
好像那个每个点单位时间带来的花费还不一样
没关系,都是一种做法
很明显任意时刻解决掉的牛都是一段连续的区间
设f[i][j][0/1]表示已经解决了[i,j]的牛,当前站在i或j,的最小花费
转移很简单,详见代码
注意要从0出发,因此添加0的虚拟点,排序后的位置设为s
边界f[s][s][0/1]=0,其余=INF
先枚举区间长度,并且要求区间的左端点在s左边,右端点在s右边
Code:
#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#define D(x) cout<<#x<<" = "<<x<<" "
#def