20200416 T3 寻找天哥【组合向量的模长的幂的期望】

2023-11-08 03:50

本文主要是介绍20200416 T3 寻找天哥【组合向量的模长的幂的期望】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目描述:

在这里插入图片描述

题目分析:

略微转化后,即给出一些向量 ( a i x i , b i x i , c i x i ) (a_ix_i,b_ix_i,c_ix_i) (aixi,bixi,cixi),其中 x i x_i xi是随机分布在 [ 0 , 1 ] [0,1] [0,1]的实数,设 R R R为向量全部相加后的模长,求 E ( R 4 ) E(R^4) E(R4)

思路一般是将式子层层分解为独立的几部分,然后相乘。

首先有 R 2 = ( ∑ i = 1 n a i x i ) 2 + ( ∑ i = 1 n b i x i ) 2 + ( ∑ i = 1 n c i x i ) 2 R^2=(\sum_{i=1}^na_ix_i)^2+(\sum_{i=1}^nb_ix_i)^2+(\sum_{i=1}^nc_ix_i)^2 R2=(i=1naixi)2+(i=1nbixi)2+(i=1ncixi)2
令这三项分别为 A , B , C A,B,C A,B,C,那么答案就是:
E ( A 4 + B 4 + C 4 + 2 ( A 2 B 2 + B 2 C 2 + C 2 A 2 ) ) E(A^4+B^4+C^4+2(A^2B^2+B^2C^2+C^2A^2)) E(A4+B4+C4+2(A2B2+B2C2+C2A2))

因为对于 i ≠ j i\neq j i=j x i x_i xi x j x_j xj是独立的,所以可以尝试一个一个添加进去:
f t , i , j , k f_{t,i,j,k} ft,i,j,k表示已经考虑了前 t t t个向量, A i ∗ B j ∗ C k A^i*B^j*C^k AiBjCk的期望。
对于新添加的第 t t t个向量,考虑它对 f t − 1 f_{t-1} ft1的影响,设新添加的向量为 ( A ′ , B ′ , C ′ ) (A',B',C') (A,B,C)
f t , i , j , k = E ( ( A + A ′ ) i ( B + B ′ ) j ( C + C ′ ) k ) = E ( ∑ x ∑ y ∑ z ( i x ) ( j y ) ( k z ) A x A ′ i − x B y B ′ j − y C z C ′ k − z ) = ∑ x ∑ y ∑ z ( i x ) ( j y ) ( k z ) E ( A x B y C z ) ∗ E ( A ′ i − x B ′ j − y C ′ k − z ) f_{t,i,j,k}=E((A+A')^i(B+B')^j(C+C')^k)\\=E(\sum_x\sum_{y}\sum_z\binom{i}{x}\binom jy\binom kzA^xA'^{i-x}B^yB'^{j-y}C^zC'^{k-z})\\=\sum_x\sum_{y}\sum_z\binom{i}{x}\binom jy\binom kzE(A^xB^yC^z)*E(A'^{i-x}B'^{j-y}C'^{k-z}) ft,i,j,k=E((A+A)i(B+B)j(C+C)k)=E(xyz(xi)(yj)(zk)AxAixByBjyCzCkz)=xyz(xi)(yj)(zk)E(AxByCz)E(AixBjyCkz)第一个 E E E就是 f t − 1 , x , y , z f_{t-1,x,y,z} ft1,x,y,z,第二个 E E E即为形如 E ( a t i b t j c t k x i + j + k ) E(a_t^ib_t^jc_t^kx^{i+j+k}) E(atibtjctkxi+j+k)的值。
∫ 0 1 x p d x = 1 p + 1 \int_0^1x^pdx=\frac 1{p+1} 01xpdx=p+11,所以 E ( a t i b t j c t k x i + j + k ) = a t i b t j c t k i + j + k + 1 E(a_t^ib_t^jc_t^kx^{i+j+k})={a_t^ib_t^jc_t^k\over i+j+k+1} E(atibtjctkxi+j+k)=i+j+k+1atibtjctk

好像还蛮简单的?

Code:

#include<bits/stdc++.h>
#define maxn 3005
#define rep(i,j,k) for(int i=(j);i<=(k);i++)
using namespace std;
const double Pi = acos(-1);
int n,CC[5][5];
double pa[5],pb[5],pc[5],f[2][5][5][5],e[5][5][5];
int main()
{freopen("find.in","r",stdin);freopen("find.out","w",stdout);for(int i=(CC[0][0]=1);i<=4;i++)for(int j=(CC[i][0]=1);j<=i;j++)CC[i][j]=CC[i-1][j-1]+CC[i-1][j];double Alpha,Beta,L,a,b,c;while(scanf("%d",&n),n){int now=0; memset(f,0,sizeof f),f[now][0][0][0]=1;for(int t=1;t<=n;t++,now=!now){scanf("%lf%lf%lf",&Alpha,&Beta,&L);a=L*cos(Beta)*cos(Alpha),b=L*cos(Beta)*sin(Alpha),c=L*sin(Beta);pa[0]=pb[0]=pc[0]=1;rep(i,1,4) pa[i]=pa[i-1]*a,pb[i]=pb[i-1]*b,pc[i]=pc[i-1]*c;rep(i,0,4) rep(j,0,4) rep(k,0,4) e[i][j][k]=pa[i]*pb[j]*pc[k]/(i+j+k+1);memset(f[!now],0,sizeof f[!now]);rep(A,0,4) rep(B,0,4) rep(C,0,A&&B?0:4)rep(i,0,A) rep(j,0,B) rep(k,0,C)f[!now][A][B][C]+=f[now][A-i][B-j][C-k]*CC[A][i]*CC[B][j]*CC[C][k]*e[i][j][k];}double R4=f[now][4][0][0]+f[now][0][4][0]+f[now][0][0][4]+2*(f[now][2][2][0]+f[now][2][0][2]+f[now][0][2][2]);printf("%.6f\n",Pi/3*R4);}
}

这篇关于20200416 T3 寻找天哥【组合向量的模长的幂的期望】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/367730

相关文章

hdu4869(逆元+求组合数)

//输入n,m,n表示翻牌的次数,m表示牌的数目,求经过n次操作后共有几种状态#include<iostream>#include<algorithm>#include<cstring>#include<stack>#include<queue>#include<set>#include<map>#include<stdio.h>#include<stdlib.h>#includ

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

寻找身高相近的小朋友

题目描述: 小明今年升学到小学一年级,来到新班级后发现其他小朋友们身高参差不齐,然后就想基于各小朋友和自己的身高差对他们进行排序,请帮他实现排序。 输入描述: 第一行为正整数H和N,0<H<200,为小明的身高,0<N<50,为新班级其他小朋友个数。第二行为N个正整数H1-HN,分别是其他小朋友的身高,取值范围0<Hi<200(1<=i<=N),且N个正整数各不相同。 输出描述: 输出

Vector3 三维向量

Vector3 三维向量 Struct Representation of 3D vectors and points. 表示3D的向量和点。 This structure is used throughout Unity to pass 3D positions and directions around. It also contains functions for doin

8. 自然语言处理中的深度学习:从词向量到BERT

引言 深度学习在自然语言处理(NLP)领域的应用极大地推动了语言理解和生成技术的发展。通过从词向量到预训练模型(如BERT)的演进,NLP技术在机器翻译、情感分析、问答系统等任务中取得了显著成果。本篇博文将探讨深度学习在NLP中的核心技术,包括词向量、序列模型(如RNN、LSTM),以及BERT等预训练模型的崛起及其实际应用。 1. 词向量的生成与应用 词向量(Word Embedding)

Go组合

摘要 golang并非完全面向对象的程序语言,为了实现面向对象的继承这一神奇的功能,golang允许struct间使用匿名引入的方式实现对象属性方法的组合 组合使用注意项 使用匿名引入的方式来组合其他struct 默认优先调用外层方法 可以指定匿名struct以调用内层方法 代码 package mainimport ("fmt")type People struct{}type Pe

【第0006页 · 数组】寻找重复数

【前言】本文以及之后的一些题解都会陆续整理到目录中,若想了解全部题解整理,请看这里: 第0006页 · 寻找重复数         今天想讨论的一道题在 LeetCode 上评论也是颇为“不错”。有一说一,是道好题,不过我们还是得先理解了它才算真正的好题。这里我们展示一种使用二进制的做法,希望能帮到你哟! 【寻找重复数】给定一个包含 n + 1 个整数的数组 nums ,其数字都

用Python实现时间序列模型实战——Day 14: 向量自回归模型 (VAR) 与向量误差修正模型 (VECM)

一、学习内容 1. 向量自回归模型 (VAR) 的基本概念与应用 向量自回归模型 (VAR) 是多元时间序列分析中的一种模型,用于捕捉多个变量之间的相互依赖关系。与单变量自回归模型不同,VAR 模型将多个时间序列作为向量输入,同时对这些变量进行回归分析。 VAR 模型的一般形式为: 其中: ​ 是时间  的变量向量。 是常数向量。​ 是每个时间滞后的回归系数矩阵。​ 是误差项向量,假

组合c(m,n)的计算方法

问题:求解组合数C(n,m),即从n个相同物品中取出m个的方案数,由于结果可能非常大,对结果模10007即可。       共四种方案。ps:注意使用限制。 方案1: 暴力求解,C(n,m)=n*(n-1)*...*(n-m+1)/m!,n<=15 ; int Combination(int n, int m) { const int M = 10007; int

代码随想录训练营day37|52. 携带研究材料,518.零钱兑换II,377. 组合总和 Ⅳ,70. 爬楼梯

52. 携带研究材料 这是一个完全背包问题,就是每个物品可以无限放。 在一维滚动数组的时候规定了遍历顺序是要从后往前的,就是因为不能多次放物体。 所以这里能多次放物体只需要把遍历顺序改改就好了 # include<iostream># include<vector>using namespace std;int main(){int n,m;cin>>n>>m;std::vector<i