牛客寒假算法基礎集訓營6 D 美食
阿新 • • 發佈:2019-02-02
鏈接 正整數 src div format adf con nbsp des
空間限制:C/C++ 262144K,其他語言524288K
64bit IO Format: %lld
現在有n個美食排成一排擺在小B的面前,依次編號為1..n,編號為i的食物大小為 a[i] ,即足夠小B吃 a[i] 口。
小B每次會吃兩口,這兩口要麽是編號相同的美食,要麽是編號之差的絕對值為1的美食。
小B想知道,她最多能吃幾次?
當時腦子瓦特了這題竟然沒寫。。
鏈接:https://ac.nowcoder.com/acm/contest/332/D
來源:牛客網
空間限制: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> usingnamespace 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; }
牛客寒假算法基礎集訓營6 D 美食