zoukankan      html  css  js  c++  java
  • BZOJ1800:fly 飞行棋 (双指针 组合数)

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

    sol:很可能被数据量误导,以为是个难题。 以为圆内接矩形的对角线经过圆中间,所以我们枚举对角线,然后组合数即可。  求过圆心的对角线可以暴力或者双指针。

    #include<bits/stdc++.h>
    #define ll long long
    #define rep(i,a,b) for(int i=a;i<=b;i++)
    using namespace std;
    const int maxn=400010;
    const double pi=acos(-1.0);
    ll sum[maxn],a[maxn],Now,ans;
    int main()
    {
        int N,head=0;
        scanf("%d",&N);
        rep(i,1,N){
            scanf("%lld",&a[i]);
            sum[i]=sum[i-1]+a[i];
        }
        rep(i,1,N-1)
         rep(j,i,N-1) {
            if((sum[j]-sum[i-1])*2==sum[N]) ans++;
        }
        ans=ans*(ans-1)/2;
        printf("%lld
    ",ans);
        return 0;
    }
  • 相关阅读:
    输出控制符的详解
    printf函数的讲解
    关于字节、Ascll码、字符的存储的讲解
    1.2
    1.1
    OS模块学习笔记
    time时间模块总结
    编译py为exe
    python计算excel平均值和标准差
    Python与Excel交互--Xlwings
  • 原文地址:https://www.cnblogs.com/hua-dong/p/10690591.html
Copyright © 2011-2022 走看看