题目

三维空间上有一个点,进行了\(n\)次移动

第\(i\)次为在\([0,L_i]\)内随机一个长度\(l_i\),向\(\vec P_i\)方向移动\(l_i\)

$\vec P_i $ 表示为 \((\alpha_i,\beta_i)\) ,意义为设 \(\vec P_i\) 在 \(xy\) 上的投影为 \(\vec Q_i\) , \(\alpha_i\) 为 \(\vec Q_i\) 和 \(xy\) 的夹角,\(\beta_i\) 为 \(\vec P_i\) 和 $ \vec Q_i$ 的夹角

从原点开始有一个球,每秒半径增加1个单位,在时刻\(i\)会消耗当前体积的能量

求消耗能量的期望值

$ n \le 3000 $

题解

  • 考虑最后的半径\(R\),答案即 $ E (\int_0^R \frac{4}{3} \pi x^3 dx) = \frac{\pi}{3} E(R^4)$

  • 设第\(i\)次移动的向量为\((a_i,b_i,c_i)x_i\) , \(x_i\) 为一个在 \([0,1]\)随机分布的变量

  • $E(R^4) =E ( ( (\sum a_ix_i)^2 + (\sum b_ix_i)^2 + (\sum c_ix_i)^2) ^2 ) $

  • 设 $ A_i = \sum a_ix_i $ ,BC同理,设 $ dp_{i,j,k,l} = E(A_i^jB_i^kC_i^l) $

  • 只需要求出\(dp\)即可求出 \(ans\)  

    根据二项式定理
    \[ \begin{align} &dp_{i,j,k,l} = \sum_p\sum_q\sum_r dp_{i-1,j-p,k-q,l-r} \times (^j_p)(^k_q)(^l_r) \times a_i^pb_i^qc_i^rE(x_i^{p+q+r})\\ &由于f(x)在[L,R]内的期望E(f(x)) = \frac{\int_L^R f(x) dx}{R-L} \\ &所以E(x_i^{p+q+r}) \ = \ \frac{1}{p+q+r+1} \\ \end{align} \]

  • 时间复杂度:\(O(5^6n)\)
  • 由于有大量无用状态,采用记忆化搜索

Code

#include<bits/stdc++.h>
#define ld long double
using namespace std;
const int N=3010;
int T,n,Tim,C[5][5],g[N][5][5][5];
ld a[N][5],b[N][5],c[N][5],f[N][5][5][5],ny[13];
ld cal(int i,int j,int k,int l){if(!i)return !j&&!k&&!l;if(g[i][j][k][l]==Tim)return f[i][j][k][l];g[i][j][k][l]=Tim;ld &res=f[i][j][k][l];res=0;for(int p=0;p<=j;++p)for(int q=0;q<=k;++q)for(int r=0;r<=l;++r)res+=cal(i-1,j-p,k-q,l-r)*C[j][p]*C[k][q]*C[l][r]*a[i][p]*b[i][q]*c[i][r]*ny[p+q+r+1];return res;
}
int main(){freopen("undertale.in","r",stdin);freopen("undertale.out","w",stdout);scanf("%d",&T);for(int i=0;i<5;++i)C[i][0]=1;for(int i=1;i<5;++i)for(int j=1;j<5;++j)C[i][j]=C[i-1][j]+C[i-1][j-1];for(int i=1;i<13;++i)ny[i]=1.0/i;while(T--){scanf("%d",&n);for(int i=1;i<=n;++i){ld x,y,l;scanf("%Lf%Lf%Lf",&x,&y,&l);a[i][0]=b[i][0]=c[i][0]=1;c[i][1]=sin(y)*l;l*=cos(y);b[i][1]=sin(x)*l;a[i][1]=cos(x)*l;for(int j=2;j<5;++j){a[i][j]=a[i][j-1]*a[i][1];b[i][j]=b[i][j-1]*b[i][1];c[i][j]=c[i][j-1]*c[i][1];}}++Tim;ld ans = cal(n,4,0,0) + cal(n,0,4,0) + cal(n,0,0,4)+2*cal(n,2,2,0) + 2*cal(n,2,0,2) + 2*cal(n,0,2,2);ans*=acos(-1)/3;printf("%.10Lf\n",ans);}return 0;
}

转载于:https://www.cnblogs.com/Paul-Guderian/p/11147476.html

【JZOJ100208】【20190705】传说之下相关推荐

  1. 保持你的决心——《传说之下》背后的设计之道

    希望与梦想使你我充满决心. 将挂在墙上的时钟取下,往回拨43800圈. 回到2015年那个格外炎热的夏日. 那年4月,<GTA5>上线steam.在ps4上架两年.国内盗版满天飞的情况下, ...

  2. 你以为的并不是你所以为的,《传说之下》Undertale打破游戏的墙

    这个一个看起来很有年代感的游戏,如果你第一次打开<传说之下>的游戏界面的时候,一定会生出这样的感叹,继而可能不屑一顾,草草玩几分钟然后关闭. 相信我,如果你耐着性子继续玩下去,你会发现一个 ...

  3. 用计算机弹传说之下鱼姐的bgm,传说之下战斗曲曲谱_传说之下打托丽尔的bgm

    传说之下最后boos的bgm PE:Hopes and Dreams SAVE the world Burning in despair His Theme NE:Your Best Nightmar ...

  4. 传说之下音乐计算机版,传说之下同人音乐

    传说之下同人音乐是一款全新的地牢冒险游戏.游戏中有很经典的音乐,暗黑气息非常强烈,游戏感十足,玩家们可以自己跟着游戏节奏开始各种挑战玩法:喜欢自由探索游戏的朋友,可以下载传说之下同人音乐试一试哦. 传 ...

  5. 传说之下手机如何使用debug_传说之下手机版怎么设置按键 按键设置方法

    传说之下手机版怎么设置按键,传说之下是一款PC端移植的像素游戏,在游戏中的主角遗落到了地下怪物世界,我们要在危险重重的异世界寻找回去的道路.那么传说之下手机版按键怎么设置呢,下面雨落就为大家带来传说之 ...

  6. 用计算机弹传说之下鱼姐的bgm,传说之下决心鱼姐模拟器

    传说之下决心鱼姐模拟器是一款像素风格的横屏闯关游戏,玩家通过收集不同的道具获得闯关资格,丰富的关卡设定,玩家可以享受沉浸式的游戏体验,多种趣味的人物对话,快来下载玩玩吧! 传说之下决心鱼姐模拟器游戏说 ...

  7. 传说之下打开debug模式超超超超超超超超详细方法

    传说之下打开debug模式超超超超超超超超详细方法 相信传说之下debug模式大家都听说过吧简直是神一般的存在!可是很多小伙伴都不会开,但是什么百度知道啊,b站上的都不详细,看不懂,今天我来出一个超超 ...

  8. 零基础 · 传说之下同人游戏制作教程

    1.0 废话 可略过 最好看一下 传说之下在很久以前便出现了"AU"这个说法,也正是从那时开始,无数游戏爱好者开始制作属于自己的传说之下同人游戏,随着时间的发展,无数AU游戏的&q ...

  9. android模拟器启动boss,传说之下boss模拟器无敌版

    传说之下boss模拟器无敌版(BattleTale),玩家自制的传说之下同人手游新作.游戏中加入了传说之下系列超多经典的boss,所以游戏难度非常高,很多玩家玩起来十分的虐心.所以本站为大家带来的是无 ...

  10. 传说之下三重审判用计算机怎么弹,传说之下三重审判无限血

    传说之下三重审讯无限血量是一款手机上就能玩sans的游戏应用,传说之下三重审讯手机版中玩家随时能够开局应战高难度关卡,经过传说之下三重审讯无敌版无限闯关. 游戏引见 传说之下三重审讯手游带玩家走进一场 ...

最新文章

  1. unicode环境下用CFile读取txt的若干疑惑,该如何处理
  2. 数据分析系列精彩浓缩(二)
  3. java 大整数编程_Java编程--RSA算法中的大整数运算
  4. 东平县农民丰收节-农业大健康·万祥军:功能性谋定生态品牌
  5. OpenCASCADE:Foundation Classes简介
  6. C#基于Socket的CS模式的完整例子
  7. oracle all_policies,Oracle数据库权限管理学习笔记
  8. 新加坡区块链公司Tribe Accelerator完成7000万美元融资
  9. 1.5T和2.0L哪个好?
  10. C++ typename 的双重含义
  11. opencv之resize
  12. linux下启动tomcat出现“This file is needed to run this program ”
  13. 剑指Offer_16_合并两个排序的链表
  14. opencv imwrite 之后与imread 图片变小原因与总结
  15. PHP制作面包屑,thinkPHP制作面包屑方法
  16. 红孩儿编辑器的模块设计13
  17. Excel快速核对两张表格
  18. 电脑或U盘文件夹变为后缀为.exe文件,解决办法。
  19. 视觉惯性组合导航技术最新综述:应用优势、主要类别及一种视觉惯性组合导航无人系统开发验证平台分享
  20. linux忘记密码修改密码_如何更改我的Linux密码

热门文章

  1. 如何将long类型的时间变量转变为标准时间
  2. 双方博弈复制动态方程(y-z,z=0.3,z=0.5,z=0.7)与matlab数值仿真——matlab2016a版本
  3. 限制性定语从句和非限制性定语从句的四大区别
  4. 虚幻引擎学习笔记——Month1 Week1
  5. java 取当天0点_java 获取当天(今日)零点零分零秒
  6. UEFI开发与调试---edk2中的Package
  7. java数字音频最强教程之如何检测一段音频中是否有声音
  8. 针对有APP签名的系统中,短信不能收发的问题解决过程
  9. 前端页面复制粘贴插件Clipboard的使用
  10. AI如何挑战传统翻译