NC23872. Chino with Expectation
描述
Chino的数学很差,因此Cocoa非常担心。这一天,Cocoa准备教Chino学习数学期望。
众所周知,数学期望就是所有可能的结果乘以概率,也就是说,如果我们有下面这张表格:
X | 1 | 2 | 3 |
---|---|---|---|
P |
那么我们可以说的期望
定义非常简单,Chino也一下就学会了。现在是作业时间啦!
Cocoa在纸上写下个正整数,接下来Cocoa会进行次询问,每次询问形如“ ”,表示如果Cocoa把数列中的某个数加上以后的期望。
题目对于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; }