zoukankan      html  css  js  c++  java
  • Codeforces 610B

    610B - Vika and Squares

    思路:注意对环状结构的理解。找到所有值的最小值minn,然后所有值减去这个最小值,再在环状结构里找一个最长连续正数的长度maxl,答案就是minn*n+maxl。

    代码:

    #include<bits/stdc++.h>
    using namespace std;
    #define ll long long
    #define pb push_back
    const int N=2e5+5;
    const int INF=0x3f3f3f3f;
    int a[N];
    int main()
    {
        ios::sync_with_stdio(false);
        cin.tie(0);
        int n;
        int minn=INF;
        cin>>n;
        for(int i=0;i<n;i++)
        cin>>a[i],minn=min(a[i],minn);
        ll ans=(ll)minn*n;
        for(int i=0;i<n;i++)a[i]-=minn;
        int maxl=0;
        bool f=false;
        for(int i=0;i<n;i++)
        {
            if(f)break;
            if(a[i])
            {
                int cnt=0;
                for(int j=i;;j++)
                {
                    if(j==n)j=0,f=true;//标记一下,不然就在环上死循环了 
                    if(a[j])cnt++;
                    else 
                    {
                        i=j;
                        break;
                    }
                }
                maxl=max(cnt,maxl);
            }
        }
        cout<<ans+maxl<<endl;
        return 0;
    }
  • 相关阅读:
    Mysql多表关系
    Linux权限
    Linux安装python环境脚本
    ZJNU 2136
    ZJNU 2135
    ZJNU 2133
    ZJNU 1699
    ZJNU 1542
    ZJNU 1538
    ZJNU 1535
  • 原文地址:https://www.cnblogs.com/widsom/p/7326487.html
Copyright © 2011-2022 走看看