牛客寒假算法基础集训营6 D 美食

当时脑子瓦特了这题竟然没写。。

链接:https://ac.nowcoder.com/acm/contest/332/D
来源:牛客网

美食
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld

题目描述

小B喜欢美食。
现在有n个美食排成一排摆在小B的面前,依次编号为1..n,编号为i的食物大小为 a[i] ,即足够小B吃 a[i] 口。
小B每次会吃两口,这两口要么是编号相同的美食,要么是编号之差的绝对值为1的美食。
小B想知道,她最多能吃几次?

输入描述:

第1行一个正整数n,表示美食个数
接下来n行,第i行一个整数a[i],表示编号为i的美食的大小

输出描述:

一个数表示小B最多吃几次。
示例1

输入

复制
4
1
5
7
8

输出

复制
10

说明

用二元组(a,b)表示某一次吃的两个美食分别为第a个美食和第b个美食,则下面为一个吃10次的方案:
(1,2)(2,2)(2,2)(3,4)(3,4)(3,4)(3,4)(3,4)(3,4)(3,4)
注意不一定要吃完。

备注:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=1e5+10;
int main()
{
    int n,a[maxn]={0};
    ll sum=0;///注意开long long 不然会爆
    cin>>n;
    for(int i=1; i<=n; i++)
       {
           cin>>a[i];
           if(a[i-1]==1&&a[i]>0)
           {
               sum++;
               a[i-1]=0;
               a[i]--;
           }
           sum+=a[i]/2;
           a[i]%=2;
       }
    cout<<sum<<endl;
        return 0;
}

猜你喜欢

转载自www.cnblogs.com/tp25959/p/10349093.html
今日推荐