51nod 1344 走格子(水题+贪心)

1344 走格子

基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题

收藏

关注

取消关注

有编号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

一开始默认初始能量为0,当走到某个格子能量值不够时,再相应的改变初始能量值使得恰好够。

 1 #include <iostream>
 2 using namespace std;
 3 typedef long long ll;
 4 ll ans=0;
 5 ll sum=0;
 6 ll n;
 7 int main()
 8 {
 9     ios::sync_with_stdio(false);//加快cin读入
10     cin>>n;
11     for(int i=0;i<n;i++)
12     {
13         ll tmp;
14         cin>>tmp;
15         if(tmp>=0)
16             sum+=tmp;
17         else
18         {
19             sum+=tmp;
20             ans+=sum<0?-sum:0;
21             sum=sum<0?0:sum;
22         }
23     }
24     cout<<ans<<endl;
25     return 0;
26 }

 
时间: 2024-07-31 14:30:34

51nod 1344 走格子(水题+贪心)的相关文章

51Nod 1344 走格子(贪心

1344 走格子 有编号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号格子.

51Nod 1344 走格子 (贪心)

有编号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号格子.途中的能量变化如下

1344 走格子

1344 走格子 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 有编号1-n的n个格子,机器人从1号格子顺序向后走,一直走到n号格子,并需要从n号格子走出去.机器人有一个初始能量,每个格子对应一个整数A[i],表示这个格子的能量值.如果A[i] > 0,机器人走到这个格子能够获取A[i]个能量,如果A[i] < 0,走到这个格子需要消耗相应的能量,如果机器人的能量 < 0,就无法继续前进了.问机器人最少需要有多少初始能量,才能完成整个旅程. 例如:n

1289 大鱼吃小鱼 1305 Pairwise Sum and Divide 1344 走格子 1347 旋转字符串 1381 硬币游戏

1289 大鱼吃小鱼 有N条鱼每条鱼的位置及大小均不同,他们沿着X轴游动,有的向左,有的向右.游动的速度是一样的,两条鱼相遇大鱼会吃掉小鱼.从左到右给出每条鱼的大小和游动的方向(0表示向左,1表示向右).问足够长的时间之后,能剩下多少条鱼? Input 第1行:1个数N,表示鱼的数量(1 <= N <= 100000). 第2 - N + 1行:每行两个数A[i], B[i],中间用空格分隔,分别表示鱼的大小及游动的方向(1 <= A[i] <= 10^9,B[i] = 0 或 1

51 nod 1344 走格子

今天开始在51nod上刷题..作为新手在这题上坑了...以后做题要注意数据类型了还有要多看看库函数.比如abs()返回类型是int的. #include <stdio.h> #include <math.h> #define inf 100000; int main() { int n; long long min=inf; long long sum=0; long long t; scanf("%d",&n); while(n--) { scanf(

1344 走格子 (前缀和)

有编号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号格子.途中的能量变化如下

CodeForces 719B Anatoly and Cockroaches (水题贪心)

题意:给定一个序列,让你用最少的操作把它变成交替的,操作有两种,任意交换两种,再就是把一种变成另一种. 析:贪心,策略是分别从br开始和rb开始然后取最优,先交换,交换是最优的,不行再变色. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024000000") #include <cstdio> #include <string> #include <cstdlib> #include <c

51nod - 1586 - 约数和 - 水题

https://www.51nod.com/Challenge/Problem.html#problemId=1586 一眼看过去居然一点思路都没有的,一言不合就打表,打贡献表. #include <bits/stdc++.h> using namespace std; typedef long long ll; int n = 25; int a[200]; void update_b(int id) { for(int i = 1; i <= id; ++i) { if(id % i

CF 1008B Turn the Rectangles(水题+贪心)

There are n rectangles in a row. You can either turn each rectangle by 90 degrees or leave it as it is. If you turn a rectangle, its width will be height, and its height will be width. Notice that you can turn any number of rectangles, you also can t