今天的比赛是在外网进行的,所以我不必像昨天一样痛苦的在把题目粘上来了(根本无法忍受它坑爹的排版!!)。
恐惧的是,当我看到第一题第一眼的时候就意识到绝壁要跳过去(数学期望值。。可以可以),但是经过详细的讲解(并没有),终于还是到了写题解的时候了!!
膜拜了大犇的代码后,我只感到了深深的。。嗯,反正先上代码吧:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
typedef long long ll;
ll n;
double ans1,ans2;
int main(){
freopen("solo.in","r",stdin);
freopen("solo.out","w",stdout);
cin>>n;
for(ll i=1,fac=1;fac<=n;i++,fac<<=1){
ll num=n/(fac<<1)*fac+max(n%(fac<<1)-fac,0ll),num0=n-num;
ans1+=(double)num/n*(double)num/n*fac;
ans2+=(double)num/n*(double)num0/n*2*fac;
}
printf("%.6e\n%.6e",ans1,ans2+ans1);
}
|
那么,数学期望值究竟是怎样的一个东西呢?
{% cq %}
在概率论和统计学中,数学期望(mean
)(或均值,亦简称期望)是试验中每次可能结果的概率乘以其结果的总和的平均。是最基本的数学特征之一。它反映随机变量平均取值的大小。
{% endcq %}
嗯,具体的自己去谷歌吧,实在是不想写(毕竟粘别人的不太好)
至于第二题,哈哈,先看一眼这惨淡的战绩:
至于cl大佬为甚么A了别人W的点,W了别人A的点,,嗯,我看了看他的代码(dp
!!简直强无敌),我是蒟蒻就不做点评了。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
#include<cstdio>
#include<algorithm>
#define INF (ll)1<<62
using namespace std;
typedef long long ll;
int n,k;
ll a[100010]={0};
ll x,y;
int main(){
freopen("qwa.in","r",stdin);
freopen("qwa.out","w",stdout);
scanf("%d%d",&n,&k);
for (int i=1;i<=n;i++){
scanf("%lld",&a[i]);
}
sort(a+1,a+n+1);
ll ans=INF,now=0,sum=0;
for (int i=1;i<=k;i++){
now=now+(ll)(i-1)*a[i]-sum;
sum=sum+a[i];
}
for (int i=k+1;i<=n;i++){
ans=min(ans,now);
sum-=a[i-k];
now-=sum-a[i-k]*(k-1);
now+=(k-1)*a[i]-sum;
sum+=a[i];
}
ans=min(ans,now);
printf("%lld",ans);
}
|
思路也十分清晰,首先是一个从1到k的循环先把前k项的距离算出来,然后在慢慢地向后移动(即从k+1到n,每次将最右边元素加入,最左边的元素踢出,然后计算值后进行比较,最后得到最小值)
接下来就是第三道题