BZOJ-3315: [Usaco2013 Nov]Pogo-Cow(动态规划)

题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3315

DP,f[i][j]表示当前在i,上一步在j的最大值,f[i][j]=max(f[j][k])+p[i],刚开始我想要用BIT维护,后来ORZ了题解之后发现傻了,由于DP过程中(从左往右),k明显是递减的,那么直接动态维护[k..j]就可以了。复杂度:O( n^2 )

代码:

#include 
#include 
#include 
 
using namespace std;
 
#define MAXN 1010
 
struct node{
        int x,p;
} a[MAXN];
 
bool cmp(node x,node y){
        return x.xy.x;
}
 
int f[MAXN][MAXN],n,ans=0;
int Max[MAXN][2];
 
int main(){
        scanf("%d",&n);
        for(int i=0;i++

你可能感兴趣的:(BZOJ-3315: [Usaco2013 Nov]Pogo-Cow(动态规划))