zoukankan      html  css  js  c++  java
  • bzoj1600 [Usaco2008 Oct]建造栅栏

    Description

    勤奋的Farmer John想要建造一个四面的栅栏来关住牛们。他有一块长为n(4<=n<=2500)的木板,他想把这块本板切成4块。这四块小木板可以是任何一个长度只要Farmer John能够把它们围成一个合理的四边形。他能够切出多少种不同的合理方案。注意: *只要大木板的切割点不同就当成是不同的方案(像全排列那样),不要担心另外的特殊情况,go ahead。 *栅栏的面积要大于0. *输出保证答案在longint范围内。 *整块木板都要用完。

    Input

    *第一行:一个数n

    Output

    *第一行:合理的方案总数

    Sample Input

    6

    Sample Output

    6


    输出详解:

    Farmer John能够切出所有的情况为: (1, 1, 1,3); (1, 1, 2, 2); (1, 1, 3, 1); (1, 2, 1, 2); (1, 2, 2, 1); (1, 3,1, 1);
    (2, 1, 1, 2); (2, 1, 2, 1); (2, 2, 1, 1); or (3, 1, 1, 1).

    下面四种 -- (1, 1, 1, 3), (1, 1, 3, 1), (1, 3, 1, 1), and (3,1, 1, 1) – 不能够组成一个四边形.



    最近在刷bzoj上usaco的银组题……

    dp。不过更像找规律……代码挺短的

    #include<cstdio>
    using namespace std;
    int n,i,f[2505];
    int main()
    {
      scanf("%d",&n);
      if(n<4) {printf("0
    ");return 0;}
      f[4]=1;
      for(i=5;i<=n;i++)
      {
        if(i%2==0)f[i]=f[i-1]+i/2-1;
        else f[i]=f[i-1]+(i-2)*(i/2-1);
      }
      printf("%d",f[n]);
      return 0;
    }
    

      

    ——by zhber,转载请注明来源
  • 相关阅读:
    【Beta阶段】第一次Scrum Meeting
    【Beta阶段】第二次Scrum Meeting
    【Beta阶段】第三次Scrum Meeting
    [BUAA软工]Alpha阶段事后分析
    [BUAA软工]Alpha阶段测试报告
    [北航软工]团队贡献分规则
    Windows Server 2008 R2之二从介质安装 AD DS
    Windows Server 2008 R2之一活动目录服务部署
    DC84问
    获取命令行指定参数
  • 原文地址:https://www.cnblogs.com/zhber/p/4035981.html
Copyright © 2011-2022 走看看