【bzoj 1600】建造栅栏(DP)

来源:互联网 发布:原版优化9 编辑:程序博客网 时间:2024/06/05 18:56

传送门biu~
三边之和大于第四边。f[i][j]表示前i条边用了长度共为j的木板,每条木板长度不能超过n的一半。dp即可。

#include<bits/stdc++.h>using namespace std;int f[5][2501],n;int main(){    scanf("%d",&n);    f[0][0]=1;    int MAX=((n+1)>>1)-1;    for(int i=1;i<=4;++i){        for(int j=1;j<=n;++j){            int to=min(MAX,j);            for(int k=1;k<=to;++k)                f[i][j]+=f[i-1][j-k];        }    }    printf("%d",f[4][n]);    return 0;} 
原创粉丝点击