1. 程式人生 > >2018NYIST計科第三次周賽最小花費問題總結

2018NYIST計科第三次周賽最小花費問題總結

比賽的時候感覺這題想複雜了,其實只需大於零的按順序買,為負的倒著買,問題就是要解決每買一次,怎麼實現後面的編號會向前進一?其實用個for()迴圈就行,從第一個數字開始加,若為正數則直接加上(把每個正數都當成第一個數字),若為負數則乘上i,注意資料型別用long long。

下面是程式碼實現

#include <iostream>
#include <stdio.h>
#define ll long long

int main() {
    ll t,n,ans;
    while(~scanf("%lld",&n))
    {
        ans=
0; for(ll i=1;i<=n;i++) { scanf("%lld",&t); if(t>0) ans+=t; else ans+=t*i; } printf("%lld\n",ans); } return 0; }