(数学) bzoj 1800

1800: [Ahoi2009]fly 飞行棋

Time Limit: 10 Sec  Memory Limit: 64 MB
Submit: 973  Solved: 808
[Submit][Status][Discuss]

Description

给出圆周上的若干个点,已知点与点之间的弧长,其值均为正整数,并依圆周顺序排列。 请找出这些点中有没有可以围成矩形的,并希望在最短时间内找出所有不重复矩形。

Input

第一行为正整数N,表示点的个数,接下来N行分别为这N个点所分割的各个圆弧长度

Output

所构成不重复矩形的个数

Sample Input

8
1
2
2
3
1
1
3
3

Sample Output

3

HINT

N<= 20

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int tot,n,dist[25],ans;
int main()
{
    int x;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&x);
        dist[i]=dist[i-1]+x;
        tot+=x;
    }
    for(int a=1;a<=n;a++)
    {
        for(int b=a+1;b<=n;b++)
        {
            for(int c=b+1;c<=n;c++)
            {
                for(int d=c+1;d<=n;d++)
                {
                    if(dist[b]-dist[a]==dist[d]-dist[c]&&tot-dist[d]+dist[a]==dist[c]-dist[b])
                        ans++;
                }
            }
        }
    }
    printf("%d\n",ans);
    return 0;
}

  

时间: 2024-12-10 10:49:55

(数学) bzoj 1800的相关文章

BZOJ 1800: [Ahoi2009]fly 飞行棋

二次联通门 : BZOJ 1800: [Ahoi2009]fly 飞行棋 /* BZOJ 1800: [Ahoi2009]fly 飞行棋 乱搞一下就好 */ #include <cstdio> #include <iostream> #define rg register inline void read (int &n) { rg int c = getchar (); for (n = 0; !isdigit (c); c = getchar ()); for (; i

BZOJ 1800

1800: [Ahoi2009]fly 飞行棋 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1622  Solved: 1293[Submit][Status][Discuss] Description 给出圆周上的若干个点,已知点与点之间的弧长,其值均为正整数,并依圆周顺序排列. 请找出这些点中有没有可以围成矩形的,并希望在最短时间内找出所有不重复矩形. Input 第一行为正整数N,表示点的个数,接下来N行分别为这N个点所分割的各个圆弧长度

bzoj 1800: [Ahoi2009]fly 飞行棋 暴力

1800: [Ahoi2009]fly 飞行棋 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/problem.php?id=1800 Description 给出圆周上的若干个点,已知点与点之间的弧长,其值均为正整数,并依圆周顺序排列. 请找出这些点中有没有可以围成矩形的,并希望在最短时间内找出所有不重复矩形. Input 第一行为正整数N,表示点的个数,接下来N行分别为这N个点所分割的各

BZOJ 1800: [Ahoi2009]fly 飞行棋【思维题,n^4大暴力】

1800: [Ahoi2009]fly 飞行棋 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1689  Solved: 1335[Submit][Status][Discuss] Description 给出圆周上的若干个点,已知点与点之间的弧长,其值均为正整数,并依圆周顺序排列. 请找出这些点中有没有可以围成矩形的,并希望在最短时间内找出所有不重复矩形. Input 第一行为正整数N,表示点的个数,接下来N行分别为这N个点所分割的各个圆弧长度

BZOJ 1800 fly-飞行棋

       这道题其实考察的就是从其中能找到几条直径,因为这次数据范围比较小,所以只需设一个二维数组,记录一下每个点及每个点从零开始的位置,最后定一个变量记录周长,最后用个循环搜一下位置小于周长一半的数据,加上周长的一半后在数组中是否有,若存在k个,则共有k*(k-1)/2个矩形.        代码如下(代码比上述方法稍显麻烦,但基本思路一致): #include<iostream> #include<cstdio> #include<cstdlib> #inclu

BZOJ 1800: [Ahoi2009]fly 飞行棋【暴力】

Description 给出圆周上的若干个点,已知点与点之间的弧长,其值均为正整数,并依圆周顺序排列. 请找出这些点中有没有可以围成矩形的,并希望在最短时间内找出所有不重复矩形. Input 第一行为正整数N,表示点的个数,接下来N行分别为这N个点所分割的各个圆弧长度 Output 所构成不重复矩形的个数 Sample Input 812231133 Sample Output 3 HINT N<= 20 思路:唔 N<=20 逗我呢TUT #include<cstdio> #in

[BZOJ] 几道比较有趣的题目

题目一 描述 BZOJ 1008: [HNOI2008]越狱 监狱有连续编号为1-N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱 分析 如果直接求的话十分复杂, 而且貌似还要考虑容斥? 这个问题的关键就是转化一下, 求不能发生越狱的状态数, 这个比较好求, 再用总的状态数剪掉即可. 代码 https://code.csdn.net/snippets/615408 题目二 描述 BZOJ 2463:

OI本月刷水记录

bzoj 1044 硬币购物 如果没有每个硬币的个数限制,这就是一个完全背包计数问题,现在我们注意到硬币个数很少,于是我们分别考虑一下每个硬币不符合条件的情况,容斥一下即可 bzoj 1225假如不考虑高精度的情况,那么转移还是好考虑的 f[i][j]表示前i个质数有j的约数最小数字 f[i][j]=minprime[i]k|jf[i?1][j/(k+1)]?prime[i]k 但万恶的高精度啊= =,于是改成搜索,然后用对数来表示,就好了 bzoj 2440 一道很神的数论题,二分+容斥+莫比

矩阵乘法专题4——bzoj 2326 [HNOI2011] 数学作业 题解

转载请注明:http://blog.csdn.net/jiangshibiao/article/details/24963747 [原题] 2326: [HNOI2011]数学作业 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 853  Solved: 473 [Submit][Status] Description [分析]我们按数字的位数来划分.对于K位数,我们就可以专门设计一个矩阵来计算. 然后就是注意细节了. [代码] #include