牛客競賽 美食(貪心)

2021-09-10 13:56:05 字數 1189 閱讀 5891

題目描述

小b喜歡美食。

現在有n個美食排成一排擺在小b的面前,依次編號為1…n,編號為i的食物大小為 a[i] ,即足夠小b吃 a[i] 口。

小b每次會吃兩口,這兩口要麼是編號相同的美食,要麼是編號之差的絕對值為1的美食。

小b想知道,她最多能吃幾次?

輸入描述:

第1行乙個正整數n,表示美食個數

接下來n行,第i行乙個整數a[i],表示編號為i的美食的大小

輸出描述:

乙個數表示小b最多吃幾次。

示例1

輸入41

578

輸出

說明

用二元組(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)

注意不一定要吃完。

備註:

1 ≤ n ≤ 105 , 0 ≤ a[i] ≤ 109

分析:貪心思維,從1~n遍歷,能吃則吃。

對於 a[i],先 ans+= a[i] / 2 ;

若 a[i] 為奇數,說明會剩下1,那麼如果 a[i+1] > 0,則令a[i+1] - =1,ans+=1 。

以下**:

#include

#define ll long long

using

namespace std;

const

int maxn=

1e5+10;

intmain()

}printf

("%lld"

,ans)

;return0;

}

牛客 組隊競賽

題目解析 此題題意,這是乙個求最優解的問題,三人一對,由首行n輸入的值來確定隊伍數目,我們為保證所有隊伍的水平值總和為最大值,則需讓隊伍中第二大的值盡量大。所以將最大值放到最右邊,最小是放左邊.解題思路 1.本題的主要思路是貪心演算法,就是每次選值時都選當前能看到的區域性最優解,所以這裡的貪心就是保...

牛客競賽Anagram

一 題目 二 題意 給定兩個長度一樣的字串 均為大寫字母 計算將a變為和b一樣的構成最少需要多少步。三 思路 將a和b分別按字母順序排序,由於可能存在輪迴向前找的情況,為了避免繞大圈,所以直接將a的當前字母和b的尾巴上未匹配的字母進行操作。四 include include include intc...

牛客寒假集訓6 美食

題目鏈結 貪心從i等於0開始遍歷,不管i等於0時的值是奇數還是偶數,除以2,把能吃的吃完,如果是奇數,會剩下一口,i等於1的值大於1,則這剩下的一口和i等於1裡的一口湊成兩口,則吃的總次數加一,i等於1的值減1,一直遍歷到最後乙個 注意如果是n個美食,要開乙個n 1的陣列並初始化為0,因為,如果只開...