首先这道题的节点数太多了,达到10^5,所以不能用数组模拟啊,肯定TLE,所以用贪心算法,读取第一个结点,搬到第二个结点,剩下的和第二个结点合并,一起搬到第三个结点。。。。。。这个算法很好,每次看成只是邻居间买卖,下面是代码:
#include<stdio.h>
#include<iostream>
#include<stdlib.h>
using namespace std;
int main()
{
int n;
while(cin>>n && n)
{
long long temp,now,sum = 0;
cin>>temp;
for(int i = 1;i < n;i++)
{
cin>>now;
sum += abs(temp);
now += temp;
temp = now;
}
cout<<sum<<endl;
}
return 0;
}