HDU 5236 Article

news/2024/11/24 8:34:00/

题目来源:http://acm.hdu.edu.cn/showproblem.php?pid=5236

题意:打印一篇论文需要按键n次,在每i+0.1秒时打,在第i+0.9秒时有p的概率系统崩溃,崩溃后需要回退到开头或上次保存的地方重新开始。可以选择在第i秒时按下x个键保存,打完所有之后也需要保存一次。求打印整篇文章需要按键的个数的期望。

提供一组数据:

input:

10
7 0.27 3
18 0.57 2
14 0.4 17
7 0.14 4
19 0.83 2
18 0.13 16
13 0.18 8
7 0.88 5
13 0.9 3
12 0.29 2

output:

Case #1: 21.155284
Case #2: 77.860465
Case #3: 119.728395
Case #4: 17.386852
Case #5: 149.764706
Case #6: 70.493621
Case #7: 45.449260
Case #8: 93.333333
Case #9: 169.000000
Case #10: 32.353105

大体思路:
在没有保存情况时,设f[i]表示打前i个字符所需的按键数的期望,可以得到
f[i] = p * (1 + f[i-1] + f[i]) + (1 - p) * (1 + f[i-1])
上式即表示有p的概率崩溃,崩溃时即从i - 1处再按一次键再回到原处重新进行f[i]次按键,或有(1 - p)的概率不崩溃,直接从f[i - 1]转移来。
化简后可得f[i] = (1 + f[i-1) / (1 - p)。

再考虑中间保存的情况。
枚举一共保存的次数i,这样即每按打n/i个字符或打n/i+1个字符保存一次。连续打n/i个字符所需的按键期望为f[n/i]。

注意:本题要求精确到小数点后6位,如果多输出小数点后的位数会判为WA(或许没写spj)。

代码:

#include <bits/stdc++.h>using namespace std;#define ll long long
#define ull unsigned long long
#define __ ios::sync_with_stdio(0);cin.tie(0);cout.tie(0)const int maxn = 5e5 + 10;double f[maxn];
int n, x;
double p;int main() {__;int _;cin >> _;for (int sce = 1; sce <= _; ++sce) {cin >> n >> p >> x;for (int i = 1; i <= n; ++i)f[i] = (1.0 + f[i - 1]) / (1.0 - p);double ans = 1e100;for (int i = 1; i <= n; ++i) {ans = min(ans, f[n / i + 1] * (double) (n % i) + f[n / i] * (i - n % i) + i * x);}cout << "Case #" << sce << ": " << fixed << setprecision(6) << ans << endl;}return 0;
}

http://www.ppmy.cn/news/165439.html

相关文章

达梦8之非默认端口(5236)如何实现操作系统认证登录

达梦8之非默认端口(5236)如何实现操作系统认证登录 1、背景 近期遇到诸多金融类项目&#xff0c;在实际生产环境中对达梦SYSDBA默认密码和实例端口&#xff0c;均不允许缺省设置&#xff0c;由此需修改SYSDBA默认密码和默认实例端口号&#xff0c;本文为大家介绍同时修改SYSD…

java中实现对象属性复制的工具类

在 Java 中&#xff0c;有多个工具类可用于实现对象属性的复制&#xff0c;使得属性值从一个对象复制到另一个对象。以下是几个常用的工具类&#xff1a; Apache Commons BeanUtils&#xff1a; Apache Commons BeanUtils 提供了 BeanUtils 类&#xff0c;可以方便地进行属性…

【从零开始进行高精度手眼标定 eye in hand(小白向)1 原理推导】

从零开始进行高精度手眼标定 eye in hand&#xff08;小白向&#xff09;1 原理推导 前言原理推导公式推导为什么在数据采集中至少需要两个位姿信息 MATLAB编程计算A矩阵的计算和获取matlab计算代码B矩阵的计算和获取matlab计算矩阵B 前言 最近由于组内的相关工作需求&#xf…

基于linux的程序库文件打包和调用的实现(二)——动态库文件打包和调用

随着技术的发展&#xff0c;基于linux项目的软件代码越发复杂&#xff0c;原来一个人可以完成的软件项目&#xff0c;现在可能需要多个人合作、多个部门合作、多个企业合作&#xff0c;每个人、每个部门、每个企业可能负责部分软件模块的开发。各个软件模块在调试过程由于涉及企…

从小白到大佬,入门Linux系统收发网络数据包的秘密/

Linux 服务器收到网络数据包&#xff0c;需求经过哪些处置&#xff0c;一步步将数据传给应用进程的呢&#xff1f;应用进程发送数据包时&#xff0c;Linux 又是如何操作将数据包发送进来的呢&#xff1f;今天我们就来聊聊这个话题。 在准备好接纳网络数据包之前&#xff0c;Li…

Talk预告 | 罗格斯大学徐子昊:在域迁移学习中,用变分推理自动生成可解释的域索引

本期为TechBeat人工智能社区第501期线上Talk&#xff01; 北京时间5月31日(周三)20:00&#xff0c;罗格斯大学 在读博士生—徐子昊的Talk将准时在TechBeat人工智能社区开播&#xff01; 他与大家分享的主题是: “在域迁移学习中&#xff0c;用变分推理自动生成可解释的域索引…

第六十三天学习记录:C语言个人总结

在花了差不多2个月的时间&#xff0c;完整的跟着一个视频课程将C语言较为系统的学习了一遍。尽管C语言在大学的时候为了考计算机二级等级考试而自学过&#xff0c;但十多年后的今天再次学习时却如初见。 通过这次学习可以说是收获颇多。 给我印象最深刻的是&#xff1a; 1、指针…

【教程】路由器自动定时登录校园网

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhang.cn] 目录 前景提要 Python脚本 Shell脚本(推荐) 路由器挂机 实现效果 前景提要 小米路由R4A千兆版安装breedOpenWRT教程以及救砖&#xff08;全脚本无需硬改&#xff09;【教程】保姆级红米AX6000刷UBoot和OpenW…