1104 Sum of Number Segments数列片段和

第一次看到这个题肯定是觉得比较简单,第一反应是用备忘录法,毕竟肯定重复的子问题很多。但是备忘录法确实写不出,干脆看了看《算法笔记》,给的方法确实让我无语且震撼
但是其实转念一想,计算子片段,比如第一个到第三个,其实就是第0个到第3个的和减去第0个到第1个的和。

#include
using namespace std;
int n;
double sum=0;
double add[100010];
int main(){
    add[0]=0;
    scanf("%d",&n);
    for(int i =1;i<=n;i++){
        scanf("%lf",&add[i]);
        add[i]+=add[i-1];
    }
    for(int i=1;i<=n;i++){
        for(int j=i;j<=n;j++){
            sum+=(add[j]-add[i-1]);
        }
    }
    printf("%.2lf",sum);
    return 0;
}

思路是好的,但是后两个还是超时了。那就老实按照答案去做吧。。。

你可能感兴趣的:(1104 Sum of Number Segments数列片段和)