题目链接:UVA 10014
解题思路: 
第一个想法是高斯消元,但貌似复杂度有点高,于是开始推公式,想了好久。 
推导过程: 
a[i-1] + a[i+1] = 2 * ( a[i] + c[i] )  
a[1] + a[n] = a[0] + a[n+1] - c[1:n]  
n = 1, 2, 3, … n 
(n+1) * a[1] = n*a[0] +a[n+1] - ( n*c[1] + (n-1)*c[2] + … + c[n] )
代码:
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
int n;
double a[3005],c[3005];
int main()
{
    int T;
    scanf("%d",&T);
    int flag=0;
    while(T--)
    {
        if(flag) printf("\n");
        else flag=1;
        memset(a,0,sizeof(a));
        memset(c,0,sizeof(c));
        scanf("%d",&n);
        scanf("%lf %lf",&a[0],&a[n+1]);
        for(int i=1;i<=n;i++)
            scanf("%lf",&c[i]);
        double sum = n*a[0] + a[n+1];
        for(int i=1;i<=n;i++)
        {
            sum-=2*c[i]*(n-i+1);
        }
        sum/=(n+1);
        printf("%.2lf\n",sum);
    }
    return 0;
}
总结: 
太久没做题,感觉脑袋要生锈
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文:http://blog.csdn.net/fuyukai/article/details/47617153