當時腦子瓦特了這題竟然沒寫。。
連結: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)
注意不一定要吃完。
備注:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIibvlGdhVXcl9FOwIjM0ADMxATO0UTMfRDO5UDMz8CXxAjMwkTMwIzLcNXZslmZvwVbvNmLyVGZvN2dv5mLzVGbpZGZh9GbwV3Lc9CX6MHc0RHaiojIsJye.jpg)
#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;
}
轉載于:https://www.cnblogs.com/tp25959/p/10349093.html