题目

三维空间上有一个点,进行了\(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_ijB_ikC_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;
}

【JZOJ100208】【20190705】传说之下的更多相关文章

  1. 【资源分享】Undertale(传说之下)简体中文精品整合包

    *----------------------------------------------[下载区]----------------------------------------------* ...

  2. [游记] pkusc 2021 游记

    流水账 Day-4 写了ICPC的一道DP,有点细节,虽然写得有点难受,但挺好玩 Day-3 写了PKUSC2018最水的一题 是随机开的题 Day-2 可以去pkusc了,从今天中午开始停课 刚吃完 ...

  3. [原创]webapp/css3实战,制作一个《炉石传说》宣传页

    在移动网页,尤其是webapp中常需要用到大量的css3动画,来获得良好交互体验 我之前帮朋友做了一个,可惜没帮上忙现在和大家分享一下 目标是要做一个<炉石传说>游戏的介绍宣传页面,文字内 ...

  4. 转:界面之下:还原真实的 MVC、MVP、MVVM 模式

    前言 做客户端开发.前端开发对MVC.MVP.MVVM这些名词不了解也应该大致听过,都是为了解决图形界面应用程序复杂性管理问题而产生的应用架构模式.网上很多文章关于这方面的讨论比较杂乱,各种MV*模式 ...

  5. 风口之下,猪都能飞。当今中国股市牛市,真可谓“错过等七年”。 给你一个回顾历史的机会,已知一支股票连续n天的价格走势,以长度为n的整数数组表示,

    转自:http://www.cnblogs.com/ranranblog/p/5845010.html 风口之下,猪都能飞.当今中国股市牛市,真可谓“错过等七年”. 给你一个回顾历史的机会,已知一支股 ...

  6. 炉石传说 C# 开发笔记(6月底小结)

    炉石传说的开发,已经有30个工作日了. 关于法术的定义方法,有过一次重大的变更:法术效果是整个炉石的核心,正是因为丰富的法术效果,才造就了炉石的可玩性. 原来构思的时候,对于法术效果没有充分的理解,所 ...

  7. 炉石传说 C# 开发笔记 (源代码整理公开)

    源代码已经整理过了,去除了不需要的项目. 注意:以前文章中出现过的Git已经变更过了,请以前关注过,Fork过的朋友,重新Fork一下. GitHub地址 卡牌XML文件的做成:(Git上面是没有XM ...

  8. 炉石传说 C# 开发笔记 (续)

    炉石传说山寨的工作一直在进行着,在开发过程中深深体会到,对于业务的理解和整个程序的架构的整理远比开发难得多. 在开发过程中,如果你的模型不合理,不准确,很有可能造成代码的混乱,冗余,难以维护和扩展性比 ...

  9. 炉石传说 C# 开发笔记

    最近在大连的同事强力推荐我玩 炉石传说,一个卡牌游戏.加上五一放一个很长很长的假期,为了磨练自己,决定尝试开发一个C#的炉石传说. 这件事情有人已经干过了,开发了一个网页版的炉石,但是貌似不能玩... ...

随机推荐

  1. 【前端知识体系-HTML相关】HTML基础知识强化总结

    1.如何理解HTML? HTML类似于一份word"文档" 描述文档的"结构" 有区块和大纲 2.对WEB标准的理解? Web标准是由一系列标准组合而成.一个网 ...

  2. 关于IDEA中web项目中web.xml配置文件标红的解决办法

    原文链接 https://blog.csdn.net/qq_33451695/article/details/86684127 解决方法前提:web.xml没有实际错误,但依然被web.xml标红 出 ...

  3. Spring aop的一些小知识点总结

    1 Spring的aop无法拦截静态方法 2 在 proxyTargetClass = false时 对于实现了接口的bean,则只有接口中的方法会被拦截: 对于没有实现任何接口的bean,publi ...

  4. Dapper学习(三)之其他用法

    这里说的其他用法,是指 Async,Buffered,Transaction,Stored Procedure. 1. 首先 dapper支持异步 ExecuteAsync, QueryAsync, ...

  5. 经典SQL语句使用方法大全(自留用)

    一.基础 1.说明:创建数据库CREATE DATABASE database-name2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建 备份 ...

  6. python 正则表达式、re

    正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配. 参考链接:https://www.runoob.com/python/python-reg-expressions. ...

  7. 初识DP

    写在前面的话: 其实在去年寒假奥赛集训的时候,就已经接触DP了,但自己是真得对那时的自己很无语,不会,想不通,记不住就不管了,也没想过要一定把它吃透--但该来的总还是要来的. 所以现在就来玩好玩的DP ...

  8. 实验吧——让我进去(hash长度扩展攻击)

    题目地址:http://ctf5.shiyanbar.com/web/kzhan.php 在页面源码没发现什么,于是用burp进行抓包重放 看到有setcookie,于是重新刷新页面拦截数据包(这次才 ...

  9. 英语chiltonite葡萄石chiltonite单词

    葡萄石Chiltonite 1.葡萄石能够促进血液循环,具有美容养颜的功效,非常适合女性佩戴,可以增加个人魅力,还能加强事业财运,凝聚财富气场. 2.绿色光对应人体心轮,对心脏,肺脏有效用,内涵的磁石 ...

  10. MyCat教程三:安装及配置介绍

    一.安装MyCat 1.安装准备环境 1.1 安装JDK   因为MyCat是java开发的,所以需要java虚拟机环境,在Linux节点中安装JDK是必须的. 1.2 放开相关端口   在主从节点上 ...