码迷,mamicode.com
首页 > 其他好文 > 详细

UVA 10014(推公式)

时间:2015-08-13 20:13:04      阅读:111      评论:0      收藏:0      [点我收藏+]

标签:

题目链接: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;
}

总结:
太久没做题,感觉脑袋要生锈

版权声明:本文为博主原创文章,未经博主允许不得转载。

UVA 10014(推公式)

标签:

原文地址:http://blog.csdn.net/fuyukai/article/details/47617153

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!