zoukankan      html  css  js  c++  java
  • BZOJ 1800 [Ahoi2009]fly 飞行棋

    1800: [Ahoi2009]fly 飞行棋

    Description

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

    Input

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

    Output

    所构成不重复矩形的个数

    Sample Input

    8
    1
    2
    2
    3
    1
    1
    3
    3

    Sample Output

    3

    HINT

    N<= 20


      明显只需要数直径。直径即弧长为半圆周,可以参考求对“重”点对的方法。加上前缀和。

     1 /**************************************************************
     2     Problem: 1800
     3     User: Doggu
     4     Language: C++
     5     Result: Accepted
     6     Time:16 ms
     7     Memory:820 kb
     8 ****************************************************************/
     9  
    10 #include <cstdio>
    11 const long long MOD = 100003;
    12 int n, sum[25], jin = 1, tot = 0;
    13 int main() {
    14     scanf( "%d", &n );
    15     for( int i = 1; i <= n; i++ ) scanf("%d",&sum[i]),sum[i]+=sum[i-1];
    16     for( int i = 1; i <= n; i++ ) {
    17         if(sum[i]-sum[jin]<sum[n]/2) continue;
    18         for( ; jin<i; jin++ ) {
    19             if(sum[i]-sum[jin]==sum[n]/2) {tot++;break;}
    20             if(sum[i]-sum[jin]<sum[n]/2) {jin--;break;}
    21         }
    22     }
    23     printf( "%d
    ", tot*(tot-1)/2 );
    24     return 0;
    25 }
    26 
    Math
  • 相关阅读:
    c程序实验报告
    C程序设计实验报告
    第六章 实验报告(函数与宏定义)
    熊承启第五章循环结构实验
    循环结构课后反思
    c语言实验报告
    c语言设计实验报告
    第九章 结构体与共用体
    第八章 指针实验
    数组实验
  • 原文地址:https://www.cnblogs.com/Doggu/p/bzoj1800.html
Copyright © 2011-2022 走看看