zoukankan      html  css  js  c++  java
  • 题解 【CF381A】 Sereja and Dima

    本题是很好的双指针练习题。

    关于双指针,详见洛谷日报#73

    我们可以用两个指针l和r表示题中两人接下来要比较的数字,用fl标记下一个将要取的人,并分别用两个计数器统计双方的答案。

    因此,我们有了如下AC代码:

     1 #include <bits/stdc++.h>//万能头文件
     2 
     3 using namespace std;//使用标准名字空间
     4 
     5 inline int read()//快速读入
     6 {
     7     int f=1,x=0;
     8     char c=getchar();
     9 
    10     while(c<'0' || c>'9')
    11     {
    12         if(c=='-')f=-1;
    13         c=getchar();
    14     }
    15 
    16     while(c>='0' && c<='9')
    17     {
    18         x=x*10+c-'0';
    19         c=getchar();
    20     }
    21 
    22     return f*x;
    23 }
    24 
    25 int n,a[1010]/*输入的数*/,ans[3]/*答案*/,l/*左指针*/,r/*右指针*/,fl/*标记*/;
    26 
    27 int main()
    28 {
    29     n=read();//输入n
    30 
    31     for(register int i=1; i<=n; i++)
    32     {
    33         a[i]=read();//输入每个数
    34     }
    35 
    36     l=1,r=n;//初始化指针
    37 
    38     while(n--)//如果还有牌取
    39     {
    40         if(fl==0)//如果是第一个人取
    41         {
    42             if(a[l]<a[r])//如果右边的比左边的牌大
    43             {
    44                 ans[1]=ans[1]+a[r];//累加
    45 
    46                 --r;//移动指针
    47             }
    48             else//如果右边的牌比左边的小(或者等于)
    49             {
    50                 ans[1]=ans[1]+a[l];//累加
    51 
    52                 ++l;//移动指针
    53             }
    54 
    55             fl=1;//接下来是第二个人取
    56         }
    57         else//如果是第二个人取
    58         {
    59 //代码和第一个人取几乎一样,只是改了累加的计数器
    60             if(a[l]<a[r])
    61             {
    62                 ans[2]=ans[2]+a[r];
    63 
    64                 --r;
    65             }
    66             else
    67             {
    68                 ans[2]=ans[2]+a[l];
    69 
    70                 ++l;
    71             }
    72 
    73             fl=0;//接下来是第一个人取
    74         }
    75     }
    76 
    77     printf("%d %d",ans[1],ans[2]);//输出,注意顺序!
    78 
    79     return 0;//完美结束
    80 }
  • 相关阅读:
    Ubuntu中文乱码问题解决方案
    微软开业网站----精华 http://www.microsoft.com/opensource/directory.aspx
    微软开源项目
    cnblogs开源合集
    微软开源软件---管理员用的软件
    微软开源项目-codeflex项目介绍
    SQLServer 微软团队开源项目 (web 版?)
    流程引擎2-CCFLOW
    流程引擎1-高人
    sql web Admin 源码.net 升级
  • 原文地址:https://www.cnblogs.com/xsl19/p/10438509.html
Copyright © 2011-2022 走看看