19-11-10-∴
一年$\mathsf{OI}$一场空,三道林先森见祖宗。
心态场:ZJ:
|
27
|
Miemeng | 20
00:00:41
|
30
00:00:41
|
0
00:00:42
|
50
00:00:42
|
传说$T1$我打的是题目意思的“正解”???
不管了,反正是手玩性质直接干的。
能骗$20$分谢天谢地了。
$T2$暴力写死了,本来可以有$65$的。
因为题目太思维所以很心态。
TJ:
关于题解,我只写个$T1$吧。
T1‘
首先解释一下题意,现在有一张表,
然后$ans$值在下标为$i$的位置,
但是在取$i$的时候两个人在位上按概率$50\%$行动,于是会有偏移,
现在要求差的期望。
柿子:
$$ans= {\sum \limits_{i=0}^{2^k-1}|a_{i}-a_{anspos}| \over 2^{k}} $$
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
#define N (1<<18)+111
#define LL long long
using namespace std;
// understood...but emm...
const int Mod=1e9+7;
int k,anspos;
int arr[N];
LL ans=0;
LL ppow(LL a,LL b){
LL res=1;
while(b){
if(b&1)res=res*a%Mod;
a=a*a%Mod;
b>>=1;
}
return res;
}
int main(){
#ifndef LOCAL
freopen("table.in" ,"r",stdin);
freopen("table.out","w",stdout);
#endif
scanf("%d%d",&k,&anspos);
for(int i=0;i<1<<k;i++)
scanf("%d",arr+i);
for(int i=0;i<1<<k;i++){
ans+=abs(arr[anspos]-arr[i]);
ans%=Mod;
}
ans=ans*ppow(ppow(2,k),Mod-2)%Mod;
cout<<ans<<endl;
}
Miemeng真的蒻

浙公网安备 33010602011771号