【题解】[Usaco2008 Oct]建造栅栏

其实这也算不上什么题解,简单说一下思路
由于三角形任意两边之和大于第三边
可知四边形任意三遍之和大于第四遍(啥逻辑)
我们可以先用这个思路的代码:

#include <iostream>
#include <cstdio>
using namespace std;
int n, l, ans;
int main() {
    cin >> n;
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n - i; j++) {
            for (int k = 1; k <= n - i - j - 1; k++) {
                l = n - i - j - k;
                if (i + j + k <= l || i + j + l <= k || i + k + l <= j || j + k + l <= i)
                    continue;
                ans++;
            }
        }
    }
    cout << ans;
}

PS:这个代码的结果虽然是正确的,但会超时
于是我就打了个1~20的表,找找规律(不要喷我)
暴力(总之啥都是暴力)AC代码:

#include<iostream>
using namespace std;
int main()
{
    int n,a[2501],plus=0;
    cin>>n;
    a[0]=a[1]=a[2]=a[3]=0;
    for(int i=4;i<=n;i++)
    {
        if(i%2==0)
        {
            a[i]=a[i-1]+(i-2)/2;
        }
        else
        {
            plus=plus+(i-5)*2+3;
            a[i]=a[i-1]+plus;
        }
    }
    cout<<a[n]<<endl;
}

原文地址:https://www.cnblogs.com/fox-nest/p/12203675.html

时间: 2024-10-12 02:17:04

【题解】[Usaco2008 Oct]建造栅栏的相关文章

[BZOJ1600] [Usaco2008 Oct] 建造栅栏

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

BZOJ 1600 [Usaco2008 Oct]建造栅栏 DP

题意:链接 方法: DP 解析: 一眼DP题. 四边形好像和三角形没什么大区别,就是三边之和大于另一边就行了. 所以我们可以搞出来最大的边长度不超过多少. 不过好像做这道题的大部分时间我都在梦游? 第一发代码绝壁脑残了 第一发代码居然求出了最大边的上下边界,然后枚举最大边长度跑一个DP. 不过这样是错的. 写完我就发现了=-=梦游简直.. 为什么是错的呢,因为最大边的位置不固定啊-这样转移是搞不出来结果哒. 反正之前都在梦游,想缩复杂度却强行多了个n/4的循环? 所以还是别想太多辣,直接f[i]

BZOJ 1600 Usaco2008 Oct 建造栅栏

题目大意:给定一个长度为n(n≤2500)的木板,要求分成4部分拼成一个面积为正的四边形,求方案数 能拼成一个面积为正的四边形等价于任意一个木板的长度<n2 切割点有3个,前两个枚举,第三个O(1)计算即可 时间复杂度O(n2) #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; int n,ans; int

[Usaco2008 Oct][BZOJ1600] 建造栅栏

1600: [Usaco2008 Oct]建造栅栏 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 949  Solved: 557[Submit][Status][Discuss] Description 勤奋的Farmer John想要建造一个四面的栅栏来关住牛们.他有一块长为n(4<=n<=2500)的木板,他想把这块本板切成4块.这四块小木板可以是任何一个长度只要Farmer John能够把它们围成一个合理的四边形.他能够切出多少种不同的合理

BZOJ1601: [Usaco2008 Oct]灌水

1601: [Usaco2008 Oct]灌水 Time Limit: 5 Sec  Memory Limit: 162 MBSubmit: 1280  Solved: 839[Submit][Status] Description Farmer John已经决定把水灌到他的n(1<=n<=300)块农田,农田被数字1到n标记.把一块土地进行灌水有两种方法,从其他农田饮水,或者这块土地建造水库. 建造一个水库需要花费wi(1<=wi<=100000),连接两块土地需要花费Pij(1

1601: [Usaco2008 Oct]灌水

1601: [Usaco2008 Oct]灌水 Time Limit: 5 Sec  Memory Limit: 162 MB Submit: 1342  Solved: 881 [Submit][Status] Description Farmer John已经决定把水灌到他的n(1<=n<=300)块农田,农田被数字1到n标记.把一块土地进行灌水有两种方法,从其他农田饮水,或者这块土地建造水库. 建造一个水库需要花费wi(1<=wi<=100000),连接两块土地需要花费Pij

[Usaco2008 Oct][BZOJ1601]灌水

1601: [Usaco2008 Oct]灌水 Time Limit: 5 Sec  Memory Limit: 162 MBSubmit: 1461  Solved: 954[Submit][Status][Discuss] Description Farmer John已经决定把水灌到他的n(1<=n<=300)块农田,农田被数字1到n标记.把一块土地进行灌水有两种方法,从其他农田饮水,或者这块土地建造水库. 建造一个水库需要花费wi(1<=wi<=100000),连接两块土地

bzoj1601【Usaco2008 Oct】灌水

1601: [Usaco2008 Oct]灌水 Time Limit: 5 Sec  Memory Limit: 162 MB Submit: 1589  Solved: 1035 [Submit][Status][Discuss] Description Farmer John已经决定把水灌到他的n(1<=n<=300)块农田,农田被数字1到n标记.把一块土地进行灌水有两种方法,从其他农田饮水,或者这块土地建造水库. 建造一个水库需要花费wi(1<=wi<=100000),连接两

BZOJ1599: [Usaco2008 Oct]笨重的石子

1599: [Usaco2008 Oct]笨重的石子 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 758  Solved: 513[Submit][Status] Description 贝西喜欢棋盘游戏和角色扮演类游戏所以她说服Farmer John把她带到玩具店,在那里,她购买了三个不同的骰子,这三个质量均匀的骰子,分别有S1,S2,S3个面.(2 <= S1 <= 20; 2 <= S2 <= 20; 2 <= S3