题意:
小B喜欢美食。
现在有n个美食排成一排摆在小B的面前,依次编号为1..n,编号为i的食物大小为 a[i] ,即足够小B吃 a[i] 口。
小B每次会吃两口,这两口要么是编号相同的美食,要么是编号之差的绝对值为1的美食。
小B想知道,她最多能吃几次?
思路:
贪心,显而易见的贪心思路但是我没懂,记录一下。
#include<iostream>
using namespace std;
typedef long long ll;
ll a[100010];
int main(){
int n;
cin>>n;
ll sum=0;
for(int i=0;i<n;i++){
cin>>a[i];
}
for(int i=0;i<n;i++){
if(a[i]%2==0){
sum+=a[i]/2;
a[i]=0;
}
// cout<<" "<<sum<<endl;
}
// cout<<sum<<endl;
for(int i=0;i<n-1;i++){
if(a[i]!=0){
if(a[i+1]!=0){
sum+=min(a[i],a[i+1]);
if(a[i]>=a[i+1]){sum+=(a[i]-a[i+1])/2;a[i]=a[i+1]=0;}
else{sum+=(a[i+1]-a[i])/2;a[i]=a[i+1]=0;}
}
else{
sum+=a[i]/2;
}
}
}
sum+=a[n-1]/2;
cout<<sum<<endl;
}