zoukankan      html  css  js  c++  java
  • [NOIP2010冲刺十二] 圆圈舞蹈

    【题目描述】

        熊大妈的奶牛在时针的带领下,围成了一个圆圈跳舞。由于没有严格的教育,奶牛们之间的间隔不一致。

          奶牛想知道两只最远的奶牛到底隔了多远。奶牛AB的距离为A顺时针走和逆时针走,到达B的较短路程。告诉你相邻两个奶牛间的距离,请你告诉奶牛两只最远的奶牛到底隔了多远。

    【输入格式】

       第一行一个整数N,表示有N只奶牛。(2N100000)

         接下来2N+1行,第I行有一个数,表示第I-1头奶牛顺时针到第I头奶牛的距离。(1≤距离≤maxlongint,距离和≤maxlongint)

       N+l行的数表示第N头奶牛顺时针到第1头奶牛的距离。

    【输出格式】

    一行,表示最大距离。

    【样例输入】

    5 
    1 
    2 
    3 
    4 
    5
    

    【样例输出】

    7



    单调队列,对拍啊对拍!
     1 #include<iostream>
     2 #include<fstream>
     3 using namespace std;
     4 ifstream fin("circlea.in");
     5 ofstream fout("circlea.out");
     6 
     7 int n,a[200005],tot=0;
     8 
     9 int min(int a,int b){
    10     if(a<b) return a;return b;
    11     }
    12 
    13 int main()
    14 {
    15     fin>>n;
    16     
    17     for(int i=1;i<=n;++i)
    18     fin>>a[i],tot+=a[i];
    19     
    20     for(int i=1;i<=n;++i)
    21     a[n+i]=a[i];
    22     
    23     int l=1,r=1,sum=0,ans=0;
    24     
    25     while(r<=2*n)
    26     {
    27       sum+=a[r];
    28       while(tot-sum<sum) {sum-=a[l];l++;}
    29       
    30       if(min(sum,tot-sum)>ans) ans=min(sum,tot-sum);
    31       r++;
    32             }
    33     
    34     fout<<ans<<endl;
    35    // system("pause");
    36     return 0;
    37     
    38     } 
  • 相关阅读:
    全选、全不选、反选
    IE Tester 怎样使用firebug 调试工具?
    策略模式
    模板方法模式
    迭代器模式——android中使用
    android 实现圆形波纹动画
    android 窗口的使用
    AlertDialog 基本使用
    国外android 网站
    ViewDragHelper 任意拖动
  • 原文地址:https://www.cnblogs.com/noip/p/2740486.html
Copyright © 2011-2022 走看看