首页 > 其他分享 >U332154 carbon 题解(期望)

U332154 carbon 题解(期望)

时间:2024-02-27 10:25:14浏览次数:15  
标签:10 frac U332154 题解 1e6 long double carbon -...-

这题其实挺简单的......

首先我们手模样例,对于第一组样例其实就是在1-n之间取一个数,求取到的数的期望。所以E(x)=\(\frac{1 + n}{2}\)。

对于第二组样例,我们首先将所有可能情况枚举出来:

10 10 10 10 10 10 10 10 10 10

9 9 9 9 9 9 9 9 9 10

8 8 8 8 8 8 8 8 9 10

7 7 7 7 7 7 7 8 9 10

6 6 6 6 6 6 7 8 9 10

5 5 5 5 5 6 7 8 9 10

4 4 4 4 5 6 7 8 9 10

3 3 3 4 5 6 7 8 9 10

2 2 3 4 5 6 7 8 9 10

1 2 3 4 5 6 7 8 9 10

这行10可太突兀了

我们可以惊奇地发现它是一层包一层的,而对于每个数i,它在数组中出现了\(i^2-(i-1)^2\)次,所以他对期望的贡献就是
\(i*(i^2-(i-1)^2)=i*((i+(i-1))*(i-(i-1)))=i*(2i-1)=2*i^2-i\)
所以\(E(x)=\frac{2*1^2+2*2^2+2*3^2+...+2*n^2-1-2-...-n}{n^2}=\frac{2*\frac{n*(n+1)*(2n+1)}{6}-\frac{n*(n+1)}{2}}{n^2}\)

所以答案就是\(\frac{2*5*11*7-55}{100}=7.15\)

考虑拓展成m维的矩阵:
对于每个数i,它在数组中出现了\(i^m-(i-1)^m\)次,所以它对答案的贡献就是\(i*(i^m-(i-1)^m)=i*i^m-i*(i-1)^m\)

所以\(E(x)=\frac{1*1^m+2*2^m+...+n*n^m-1*(1-1)^m-2*(2-1)^m-...-n*(n-1)^m}{n^m}\)

\(=\frac{1*1^m+2*2^m+...+n*n^m-1*0^m-2*1^m-...-n*(n-1)^m}{n^m}\)

\(=\frac{n*n^m-1^m-2^m-...-(n-1)^m}{n^m}\)

到这里好像已经能对付这个数据了,但是\(\verb!1e6^1e6!\)大约有\(6*1e6\)位,是肯定开不下的,我们不妨对公式进行变型

\(E(x)=n-(\frac{1}{n})^m-(\frac{2}{n})^m-...-(\frac{n-1}{n})^m\)

这样就可以啦,公式符合直觉,因为当m很大时\(E(x)\)接近n

#include<bits/stdc++.h>
using namespace std;
long long T,n,m;
double qpow(double b,long long p){
	double ans=1,t=b;
	while(p!=0){
		if(p&1){
			ans*=t;
		} 
		t=t*t;
		p=p>>1; 
	} 
	return ans;
} 
int main(){
	cin>>n>>m;
	double sum=0;
	for(int i=1;i<=n-1;i++){
		sum+=qpow(i*1.0/n,m);
	}
	printf("%.2lf\n",n-sum);
	
	return 0;
}

标签:10,frac,U332154,题解,1e6,long,double,carbon,-...-
From: https://www.cnblogs.com/wuhupai/p/18036308

相关文章

  • U329011 trie pi 题解
    花了2d打磨出来的题目,觉得很有意思。先讲点无关的,这道题有两版,但都是对要求的量进行改动。1.第一次要求的是y属性为a与y属性为b的两个节点的路径权值之和,对于要求的这个量,我们设v[i]为i到根节点的权值之和。那么我们先对a,b进行质因数分解,设dcg为a,b分解质因数后最长公共前缀的乘......
  • 时间戳时区问题解决方法
    在大家开发时会遇到这种情况:服务器是以东八时区为准(即中国标准时间),但是客户端会在不同地方,比如说雅典开罗(+2),格陵兰(-3),夏威夷(-10),当客户端选择某一个时间后,传递给服务器的时间戳,是以当地时区来解析的时间戳,这样就会出现一个时间差的问题,从而造成时间不准确。下面我们就来解决这种问......
  • [ABC314Ex] Disk and Segments题解(退火实现)
    一到比较水的退火题(虽然也调了3h)题意在平面直角坐标系中,有\(n\)条线段,第\(i\)条的端点是\((a_i,b_i)\)和$(c_i,d_i)$,任意线段不共点。(这里笔者为了方便会默认\(a_i<c_i\))你要在平面上画一个圆,使得任意一条线段都和圆周或圆内部有至少一个公共点,求满足条件的圆的最小......
  • P4666 [BalticOI 2011 Day1] Growing Trees题解(平衡树思想)
    自己第一道不看题解写出来的紫题,庆祝一下(没初始化种子导致调了30min)这是一个fhq-treap的题解思路来源:首先看题目,因为是序列上的问题,不难想到是一道数据结构题。首先看到操作C:对于这种操作,我们可以用平衡树解决,具体方法是,将树split成\(<min,min\lex\lemax,>max\)这......
  • AGC005D 题解
    传送门如果一个排列\(P\)满足对于所有的\(i\)都有\(|P_i-i|\neqk\),则称排列\(P\)为合法的。现给出\(n\)和\(k\),求有多少种合法的排列。由于答案很大,请输出答案对\(924844033\)取模的结果。\(2\leqn\leq2\times10^3\),\(1\leqk\leqn-1\)。一个新的trick:考虑......
  • 2024.2.25模拟赛T3题解
    题目推出dp柿子之后,枚举\(i\)的时候用线段树维护\(1-i\)的\(mex\)段,对于每一段,分别使用线段树套李超树维护,对于每个\(mex\)再次使用线段树套李超树维护即可code#include<bits/stdc++.h>usingnamespacestd;#defineN600005#defineintlonglongintn,m;consti......
  • 2024.2.25模拟赛T1题解
    题目考虑DP式子之后,可以通过堆维护函数,求出对应值code#include<bits/stdc++.h>usingnamespacestd;#defineintlonglong#defineN200005intzu,n,d,tg,num;inta[N];priority_queue<int>q;signedmain(){ scanf("%lld",&zu); while(zu--){ scanf(&qu......
  • 2024.2.25模拟赛T2题解
    题目枚举根之后,考虑每次连边的贡献,通过贡献算出每个点的权值,每次找出权值最大的点,又要保证父亲在儿子之前,所以将父亲和儿子合并,权值也合并一下即可code#include<bits/stdc++.h>usingnamespacestd;#defineN2005intans,n,k;intsz[N],deg[N],du[N],fu[N],f[N],h[N];str......
  • 2024.2.26模拟赛T2题解
    题目对询问扫描线,建出\(PAM\)的失配树之后,每次查询相当于,把\(r\)对应节点到根路径染色之后,有多少个节点的值大于\(l\),可以树剖+ODT实现code#pragmaGCCoptimize("Ofast","inline","-ffast-math")#pragmaGCCtarget("avx,sse2,sse3,sse4,mmx")#include<bits/s......
  • 2024.2.26模拟赛T1题解
    题目先建出圆方树,题目转换为数长度为\(2*L-1\)的路径数,长链剖分code#include<bits/stdc++.h>usingnamespacestd;#defineN2000005#definelllonglongintn,m,top,tot,cnt,L,k;intdfn[N],low[N],zhan[N],h[N];structAB{ inta,b,n;}d[N*4];voidcun(intx,int......