热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

HDU6814杭电多校第5场Tetrahedron(其实就两个式子,超简单版)

题意:三个面都是直角的三棱锥,三个棱长分别为a,b,ca,b,ca,b,c(在[1,n][1,n][1,n]中任取)。设顶

题意:

三个面都是直角的三棱锥,三个棱长分别为a,b,ca,b,ca,b,c(在[1,n][1,n][1,n]中任取)。设顶点到底面的距离hhh,求1h2\frac{1}{h^2}h21的期望。

解析:

我看官方讲解推导实在太麻烦了,于是写一下这篇博客说一下自己的推法。

既然三棱锥三个角都是直角,我们直接把顶点当作坐标原点,三条棱当作三个方向的轴,hhh的求解就转换成了点到面的距离。
在这里插入图片描述

三维直角坐标系中点(x0,y0,z0)(x_0,y_0,z_0)(x0,y0,z0)到面Ax+By+Cz+D=0Ax+By+Cz+D=0Ax+By+Cz+D=0的距离公式:
h=∣Ax0+By0+Cz0+D∣A2+B2+C2h=\frac{|Ax_0+By_0+Cz_0+D|}{\sqrt{A^2+B^2+C^2}} h=A2+B2+C2

Ax0+By0+Cz0+D
底面是一个过(0,0,a),(b,0,0),(0,c,0)(0,0,a),(b,0,0),(0,c,0)(0,0,a),(b,0,0),(0,c,0)的面,面的公式求都不用求
acx+aby+bcz−abc=0ac\ x+ab\ y+bc\ z-abc=0 ac x+ab y+bc zabc=0
顶点是坐标原点,直接套公式
h=abca2b2+b2c2+a2c2h=\frac{abc}{a^2b^2+b^2c^2+a^2c^2} h=a2b2+b2c2+a2c2abc
那么
1h2=1a2+1b2+1c2\frac{1}{h^2}=\frac{1}{a^2}+\frac{1}{b^2}+\frac{1}{c^2} h21=a21+b21+c21
a,b,ca,b,ca,b,c等价,E(1h2)=3×E(1a2)E(\frac{1}{h^2})=3\times E(\frac{1}{a^2})E(h21)=3×E(a21)

线性求下逆元,再求前缀和,最后输出的时候别忘了期望还要除以概率,pre[n]×inv[n]%modpre[n]\times inv[n]\%modpre[n]×inv[n]%mod

AC代码:

#include
#include
#define pb push_back
#define fir first
#define sec second
#define ms(a,b) memset(a,b,sizeof(a))
#define INF 0x3f3f3f3f
#define sp system("pause")
#define multi int T;scanf("%d",&T);while(T--)
using namespace std;
typedef long long ll;
typedef double db;
const int N=6e6+5;
const ll mod=998244353;
const db pi=acos(-1.0);
ll inv[N],pre[N];
ll qpow(ll a,ll b){ll res=1;while(b){if(b&1) res=res*a%mod;a=a*a%mod;b>>=1;}return res;
}
void invv(int n,int p)//1~n在模p意义下逆元
{inv[0]&#61;inv[1]&#61;1;for(int i&#61;2;i<&#61;n;i&#43;&#43;)inv[i]&#61;((-p/i*inv[p%i])%p&#43;p)%p;
}
int main()
{#ifndef ONLINE_JUDGEfreopen("D:\\work\\data.in","r",stdin);#endifinvv(6e6,mod);for(ll i&#61;1;i<&#61;6e6;i&#43;&#43;){pre[i]&#61;(pre[i-1]&#43;3*inv[i]*inv[i])%mod;} multi{int n;scanf("%d",&n);printf("%lld\n",pre[n]*inv[n]%mod);}
}


推荐阅读
  • Prim算法在处理稠密图时表现出色,尤其适用于边数远多于顶点数的情形。传统实现的时间复杂度为 \(O(n^2)\),但通过引入优先队列进行优化,可以在点数为 \(m\)、边数为 \(n\) 的情况下显著降低时间复杂度,提高算法效率。这种优化方法不仅能够加速最小生成树的构建过程,还能在大规模数据集上保持良好的性能表现。 ... [详细]
  • 在稀疏直接法视觉里程计中,通过优化特征点并采用基于光度误差最小化的灰度图像线性插值技术,提高了定位精度。该方法通过对空间点的非齐次和齐次表示进行处理,利用RGB-D传感器获取的3D坐标信息,在两帧图像之间实现精确匹配,有效减少了光度误差,提升了系统的鲁棒性和稳定性。 ... [详细]
  • 在处理UVA11987问题时,关键在于实现并查集结构以支持删除操作。特别地,当需要删除某个节点时,如果该节点不是根节点,则处理相对简单;然而,若删除的是根节点,则需要进行额外的处理来维护集合的连通性。本文将详细介绍如何通过优化并查集算法,确保在删除根节点时仍能高效地维护数据结构的完整性和查询效率。 ... [详细]
  • 本周课程涵盖了高精度计算、前缀和及差分技术。在高精度计算部分,我们将探讨如何处理任意进制的数值运算,包括但不限于正数的加法、减法和乘法。通过调整基数,可以灵活应对不同进制的需求。前缀和与差分技术则主要用于高效解决数组和区间查询问题,提升算法性能。 ... [详细]
  • 开发笔记:STL 容器 deque 的元素访问与迭代器详解
    开发笔记:STL 容器 deque 的元素访问与迭代器详解 ... [详细]
  • 计算 n 叉树中各节点子树的叶节点数量分析 ... [详细]
  • BZOJ4240 Gym 102082G:贪心算法与树状数组的综合应用
    BZOJ4240 Gym 102082G 题目 "有趣的家庭菜园" 结合了贪心算法和树状数组的应用,旨在解决在有限时间和内存限制下高效处理复杂数据结构的问题。通过巧妙地运用贪心策略和树状数组,该题目能够在 10 秒的时间限制和 256MB 的内存限制内,有效处理大量输入数据,实现高性能的解决方案。提交次数为 756 次,成功解决次数为 349 次,体现了该题目的挑战性和实际应用价值。 ... [详细]
  • 本文作为“实现简易版Spring系列”的第五篇,继前文深入探讨了Spring框架的核心技术之一——控制反转(IoC)之后,将重点转向另一个关键技术——面向切面编程(AOP)。对于使用Spring框架进行开发的开发者来说,AOP是一个不可或缺的概念。了解AOP的背景及其基本原理,对于掌握这一技术至关重要。本文将通过具体示例,详细解析AOP的实现机制,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 结语 | 《探索二进制世界:软件安全与逆向分析》读书笔记:深入理解二进制代码的逆向工程方法
    结语 | 《探索二进制世界:软件安全与逆向分析》读书笔记:深入理解二进制代码的逆向工程方法 ... [详细]
  • BZOJ1034 详细解析与算法优化
    本文深入解析了BZOJ1034问题,并提出了优化算法。通过借鉴广义田忌赛马的贪心策略,当己方当前最弱的马优于对方最弱的马时进行匹配;同样地,若己方当前最强的马优于对方最强的马,也进行匹配。此方法在保证胜率的同时,有效提升了算法效率。 ... [详细]
  • 题目描述:小K不幸被LL邪教洗脑,洗脑程度之深使他决定彻底脱离这个邪教。在最终离开前,他计划再进行一次亚瑟王游戏。作为最后一战,他希望这次游戏能够尽善尽美。众所周知,亚瑟王游戏的结果很大程度上取决于运气,但通过合理的策略和算法优化,可以提高获胜的概率。本文将详细解析洛谷P3239 [HNOI2015] 亚瑟王问题,并提供具体的算法实现方法,帮助读者更好地理解和应用相关技术。 ... [详细]
  • Dijkstra算法是一种高效的图论算法,用于在网络中寻找两点之间的最短路径。该算法通过逐步扩展已知最短路径的节点,最终确定从起点到终点的最优路径。在实际应用中,Dijkstra算法广泛应用于路由选择、交通规划等领域,能够有效解决大规模网络中的路径优化问题。 ... [详细]
  • 本文详细探讨了C语言中`extern`关键字的简易编译方法,并深入解析了预编译、`static`和`extern`的综合应用。通过具体的代码示例,介绍了如何在不同的文件之间共享变量和函数声明,以及这些关键字在编译过程中的作用和影响。文章还讨论了预编译过程中宏定义的使用,为开发者提供了实用的编程技巧和最佳实践。 ... [详细]
  • 本文详细介绍了如何在Linux系统中搭建51单片机的开发与编程环境,重点讲解了使用Makefile进行项目管理的方法。首先,文章指导读者安装SDCC(Small Device C Compiler),这是一个专为小型设备设计的C语言编译器,适合用于51单片机的开发。随后,通过具体的实例演示了如何配置Makefile文件,以实现代码的自动化编译与链接过程,从而提高开发效率。此外,还提供了常见问题的解决方案及优化建议,帮助开发者快速上手并解决实际开发中可能遇到的技术难题。 ... [详细]
  • 本文介绍了C语言中指针的基础知识及其初步应用。首先,文章详细解释了如何定义变量和指针,例如通过 `int i, j, k;` 定义整型变量,以及使用 `int *pi, *pj, *pk;` 来声明指向整型数据的指针。接着,探讨了变量和指针的初始化方法,强调了正确的初始化对于避免程序错误的重要性。此外,还简要介绍了指针在数组、函数参数传递等场景中的基本应用,为初学者提供了全面的入门指导。 ... [详细]
author-avatar
也许吧但不是2007029SES
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有