列表

详情


NC23872. Chino with Expectation

描述

Chino的数学很差,因此Cocoa非常担心。这一天,Cocoa准备教Chino学习数学期望。
众所周知,数学期望就是所有可能的结果乘以概率,也就是说,如果我们有下面这张表格:

X 1 2 3
P


那么我们可以说X的期望
定义非常简单,Chino也一下就学会了。现在是作业时间啦!
Cocoa在纸上写下个正整数,接下来Cocoa会进行次询问,每次询问形如“x_i l_i r_i,表示如果Cocoa把数列中的某个数加上x_i以后的期望。
题目对于Chino来说太难啦,你能帮一帮Chino吗?

输入描述

第一行是两个正整数n, q;接下来一行是n个数ai,接下来q行每行三个数xi,  li, ri,描述了一组询问

输出描述

对于每组询问,给出相应的回答。你的答案会被认为是正确的,当且仅当你的答案是a,标准答案是b,并且

示例1

输入:

5 3
1 2 3 4 5
1 2 3
2 1 4
4 3 5

输出:

2.700000
2.900000
4.800000

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++14(g++5.4) 解法, 执行用时: 367ms, 内存消耗: 5112K, 提交时间: 2019-04-07 12:18:48

#include <bits/stdc++.h>
using namespace std;
long long a[100005],sum[100005];
int main(){
	int n,q;
	cin>>n>>q;
	for(int i=1;i<=n;i++){
		scanf("%lld",&a[i]);
		sum[i]=sum[i-1]+a[i];
	}
	while(q--){
		int l,r;
		double x;
		scanf("%lf%d%d",&x,&l,&r);
		double res=(0.0+sum[r]-sum[l-1])/(r-l+1)+x/n;
		printf("%lf\n",res);
	}
	return 0;
}

C++11(clang++ 3.9) 解法, 执行用时: 463ms, 内存消耗: 8848K, 提交时间: 2019-12-02 19:17:51

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
double t,sum[N];
int n,m,l,r;
int main(){
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++) {scanf("%lf",&t);sum[i]=sum[i-1]+t;}
	while(m--){
		scanf("%lf%d%d",&t,&l,&r);
		printf("%.6lf\n",(sum[r]-sum[l-1]+t*double(r-l+1)/n)/(r-l+1));
	}
	return 0;
}

上一题