BZOJ 1600: [Usaco2008 Oct]建造栅栏|动态规划

来源:互联网 发布:s7-300plc编程实例 编辑:程序博客网 时间:2024/04/29 20:06

考虑一下构成四边形的条件

任意一条边都<周长的一半

dp f[i][j]表示选了i条边长度为j的方案数

#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#include<queue>#include<vector>#include<set>#include<map>#include<algorithm>#include<iostream>using namespace std;int f[5][2555],n,mx;int main(){cin>>n;mx=(n+1)/2-1;f[0][0]=1;for(int i=1;i<=4;i++)    for(int j=1;j<=n;j++)        for(int k=1;k<=min(j,mx);k++)            f[i][j]+=f[i-1][j-k];cout<<f[4][n];return 0;}


0 0