Logo xushuoxin的博客

博客

B. 信用卡还款 题解

2022-05-09 18:52:23 By xushuoxin

554. 信用卡还款

题目描述

西西有N(1 <= N <= 100,000)张银行卡,每张银行卡要么是储蓄卡,要么是信用卡。储蓄卡里存了钱,信用卡里借了钱。她的N张银行卡分别对应N个不同的银行,依次标号#为1..N。 现在,信用卡还款日到了。西西需要给她的银行卡还款,她知道,她的存款钱比欠款多。假设银行分布在一条直线上,第i家银行位置距离西西家i米。西西打算沿着这条直线行走,从她存款的银行卡里取钱出来,并且还钱给她欠款的信用卡。 当她沿直线移动的时候,她可以从她存款的银行里取出所有的钱。当她有足够的钱可以还清她的某个债,就可以把钱还到欠钱的银行。银行i里西西存款为D_i元(-1,000 <= D_i <=1,000; D_i ≠ 0),负数表示西西欠银行i钱。 西西从家出发,位置为0,初始西西没有钱。求西西收回她的所有存款,并且还清她的欠债所需行走的最短距离是多少?注意:她必须在最后一家银行所在的位置,完成她的行走。

输入格式:

行1:一个整数:N 行2..N+1:第i+1行包含一个整数:D_i。

输出格式:

行1:一个整数,西西收回借债并且还清欠债,所需要行走的最短距离(单位为米)

输入样例#1:

5

100

-200

250

-200

200

输出样例#1:

9

这道题的意思是西西要去1..N家银行还钱,取钱。如果遇到一家银行她身上的钱不够还清债务,就得去后面的银行先取钱再回来还,而且最终还要到最后一家银行去。

注意点:

1.当不够还清债务去后面的银行取钱时,要把去的路程和回来的路程加起来(*2)计算。

2.最后即使你没有了欠债,但也要走到最后一家银行。

3.这题使用单层循环就可以AC(建议使用,100分),如果你执意使用双重循环也不是不行(不推荐使用,40分),但是总之要注意一点:每家银行只能取一次钱!!!

评论

xushuoxin
@乙鸟
Benny
没看懂qwq
昊然
@xushuoxin 这样在test1就会挂掉,test1要多走一个

发表评论

可以用@mike来提到mike这个用户,mike会被高亮显示。如果你真的想打“@”这个字符,请用“@@”。