1. 程式人生 > >51Nod 1344 走格子 (貪心)

51Nod 1344 走格子 (貪心)

ret 機器人 const ani 能夠 貪心 nod 多少 整數

有編號1-n的n個格子,機器人從1號格子順序向後走,一直走到n號格子,並需要從n號格子走出去。機器人有一個初始能量,每個格子對應一個整數A[i],表示這個格子的能量值。如果A[i] > 0,機器人走到這個格子能夠獲取A[i]個能量,如果A[i] < 0,走到這個格子需要消耗相應的能量,如果機器人的能量 < 0,就無法繼續前進了。問機器人最少需要有多少初始能量,才能完成整個旅程。 例如:n = 5。{1,-2,-1,3,4} 最少需要2個初始能量,才能從1號走到5號格子。途中的能量變化如下3 1 0 3 7。 Input
第1行:1個數n,表示格子的數量。(1 <= n <= 50000)
第2 - n + 1行:每行1個數A[i],表示格子裏的能量值(-1000000000 <= A[i] <= 1000000000)
Output
輸出1個數,對應從1走到n最少需要多少初始能量。
Input示例
5
1
-2
-1
3
4
Output示例
2

思路:不斷更新最小值
 1 #include <iostream>
 2 #include <algorithm>
 3 #include <cstring>
 4 #include <cstdio>
 5 #include <vector>
 6 #include <cstdlib>
 7 #include <iomanip>
 8 #include <cmath>
 9
#include <ctime> 10 #include <map> 11 #include <set> 12 using namespace std; 13 #define lowbit(x) (x&(-x)) 14 #define max(x,y) (x>y?x:y) 15 #define min(x,y) (x<y?x:y) 16 #define MAX 100000000000000000 17 #define MOD 1000000007 18 #define pi acos(-1.0) 19 #define ei exp(1) 20 #define PI 3.141592653589793238462 21
#define INF 0x3f3f3f3f3f 22 #define mem(a) (memset(a,0,sizeof(a))) 23 typedef long long ll; 24 const int N=50005; 25 const int mod=1e9+7; 26 bool cmp(char x,char y) 27 { 28 return x>y; 29 } 30 ll a[N]; 31 int main() 32 { 33 int n; 34 scanf("%d",&n); 35 ll t=0,s=0; 36 for(int i=0;i<n;i++) 37 scanf("%lld",&a[i]); 38 for(int i=0;i<n;i++){ 39 s+=a[i]; 40 if(s<t) t=s; 41 } 42 cout<<0-t<<endl; 43 return 0; 44 }

51Nod 1344 走格子 (貪心)