• bzoj1800飞行棋


    题目链接

    简单模拟

    真的不敢相信ahoi09年的题竟然是这个难度

    首先,一个必须要知道的定理是:圆上只有直径所对的圆周角是直角。

    然后就很显然了,

    只有两条不重合的直径上的四个点才能组成一个矩形,

    所以统计有多少条直径,答案就是$frac{n(n-1)}{2}$

    直径的话,就意味着左半边长度$=$右半边的长度$=$ $frac{ ext{周长}}{2}$

    首先,当圆周长是奇数的时候,显然正整数内不存在任何一条直径。

    对于周长是偶数

    那么怎么统计有多少条直径呢?

    维护一个前缀和就好了啊$……$

    上代码:

    /**************************************************************
        Problem: 1800
        User: zhangheran
        Language: C++
        Result: Accepted
        Time:76 ms
        Memory:1288 kb
    ****************************************************************/
     
    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<cmath>
    using namespace std;
    int n;
    int a[25];
    int sum[25];
    int calc(int xx){return xx*(xx-1)/2;} 
    int num;int rp;
    int main()
    {
    //  freopen("1.in","r",stdin);
    //  freopen("1.out","w",stdout);
        scanf("%d",&n);
        for(int i=1;i<=n;i++) scanf("%d",&a[i]),sum[i]=sum[i-1]+a[i];
        if(sum[n]%2||sum[n]<=0){puts("0");return 0;}
        for(int i=1;i<=n;i++)
          for(int j=i+1;j<=n;j++)
            if(sum[j]-sum[i]==sum[n]/2) num++;
        printf("%d",calc(num));
        return 0;
    }
    /*
     
    7
    19
    16
    14
    2
    4
    12
    3
     
    */
  • 相关阅读:
    小D课堂
    小D课堂
    小D课堂
    小D课堂
    小D课堂
    小D课堂
    小D课堂
    阶段3 3.SpringMVC·_07.SSM整合案例_09.ssm整合之Spring整合MyBatis框架配置事务
    阶段3 3.SpringMVC·_07.SSM整合案例_08.ssm整合之Spring整合MyBatis框架
    阶段3 3.SpringMVC·_07.SSM整合案例_07.ssm整合之编写MyBatis框架测试保存的方法
  • 原文地址:https://www.cnblogs.com/arcturus/p/9368527.html
Copyright © 2020-2023  润新知