zoukankan      html  css  js  c++  java
  • B-Boxes

    题目描述

    There are N boxes arranged in a circle. The i-th box contains Ai stones.

    Determine whether it is possible to remove all the stones from the boxes by repeatedly performing the following operation:

    Select one box. Let the box be the i-th box. Then, for each j from 1 through N, remove exactly j stones from the (i+j)-th box. Here, the (N+k)-th box is identified with the k-th box.
    Note that the operation cannot be performed if there is a box that does not contain enough number of stones to be removed.

    Constraints
    1≤N≤105
    1≤Ai≤109

    输入

    The input is given from Standard Input in the following format:

    N
    A1 A2 … AN

    输出

    If it is possible to remove all the stones from the boxes, print YES. Otherwise, print NO.

    样例输入

    5
    4 5 1 2 3
    

    样例输出

    YES
    

    提示

    All the stones can be removed in one operation by selecting the second box.

    #include <bits/stdc++.h>
    #define ll long long
    using namespace std;
    const int maxn=1e5+10;
    ll a[maxn];
    int main()
    {
        ll i,j,k,m,n;
        cin>>n;
        ll cnt=0,ans=0,sum=0;
        for(i=1; i<=n; i++)
        {
            cin>>a[i];
            sum+=a[i];
        }
        if((2*sum)%(n*(n+1))!=0)
    
        {
            cout<<"NO"<<endl;
            return 0;
        }
        else
        {
            ans=(2*sum)/(n*(n+1));
            for(i=1; i<=n; i++)
            {
                if(i==n)
                {
                    if((a[i]-a[1]+ans)%n!=0||(a[i]-a[1])<ans)
                    {
                        cout<<"NO"<<endl;
                        return 0;
                    }
                }
                else
                {
                    if((a[i]-a[i+1]+ans)%n!=0||(a[i]-a[i+1])<ans)
                    {
                        cout<<"NO"<<endl;
                        return 0;
                    }
                }
            }
            cout<<"YES"<<endl;
        }
        return 0;
    }
    View Code

    首先几个数的和一定是1到n的和的倍数

    不是则no

    根据是几倍判断有多少个1到n

    然后找规律

    不要忘记努力,不要辜负自己 欢迎指正 QQ:1468580561
  • 相关阅读:
    MVP模式与MVVM模式
    webpack的配置处理
    leetcode 287 Find the Duplicate Number
    leetcode 152 Maximum Product Subarray
    leetcode 76 Minimum Window Substring
    感知器算法初探
    leetcode 179 Largest Number
    leetcode 33 Search in Rotated Sorted Array
    leetcode 334 Increasing Triplet Subsequence
    朴素贝叶斯分类器初探
  • 原文地址:https://www.cnblogs.com/smallocean/p/8886856.html
Copyright © 2011-2022 走看看