zoukankan      html  css  js  c++  java
  • BZOJ 1800 fly-飞行棋

           这道题其实考察的就是从其中能找到几条直径,因为这次数据范围比较小,所以只需设一个二维数组,记录一下每个点及每个点从零开始的位置,最后定一个变量记录周长,最后用个循环搜一下位置小于周长一半的数据,加上周长的一半后在数组中是否有,若存在k个,则共有k*(k-1)/2个矩形。

           代码如下(代码比上述方法稍显麻烦,但基本思路一致):

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cmath>
     
    using namespace std;
     
    int i_number,i_temp;
    int i_place[100000];
    int i_total=0,i_side=0;
     
    int main()
    {
        cin>>i_number;
        i_place[0]=1;
        for(int i=0;i<i_number;i++)
        {
            cin>>i_temp;
            i_total=i_total+i_temp;
            i_place[i_total]=1;
        }
        for(int i=0;i<i_total/2;i++)
        {
            if(i_place[i]==1)
            {
                if(i_place[i_total/2+i]==1)
                {
                    i_side=i_side+1;
                }
            }
        }
         
        cout<<i_side*(i_side-1)/2<<endl;
         
        return 0;
    }
    感谢各位观看我的博客,如有不足还望指出,谢谢。
  • 相关阅读:
    ubuntu更换阿里源
    记一次开源软件的篡改
    linux下搜索指定内容
    随笔_1
    单细胞中的细胞类型划分
    scDNA-seq genomic analysis pipline
    NIH周三讲座视频爬虫
    ggplot2_bubble
    TCGA数据批量下载
    lncRNA芯片重注释
  • 原文地址:https://www.cnblogs.com/szy-wlxy/p/4641405.html
Copyright © 2011-2022 走看看