洛谷P17259 [ICPC 2017 Urumqi R] Coins
hello~我又来了我这篇是本来要发洛谷题解的但是管理员给我打回了我改完了以后就不能交了所以我就在这里也写一篇啦题目传送门题目描述Alice 和 Bob 正在玩一个简单的游戏。他们将 n 枚相同的硬币排成一行初始时所有硬币均正面朝下放置在桌面上反面朝上。他们恰好进行 m 次操作每次任意选出 k 枚硬币抛向空中再以相同概率将它们正面朝上或正面朝下放回。他们的目标是使最终正面朝上的硬币尽可能多。输入格式输入包含多组测试数据第一行是一个整数 t (1≤t≤1000)表示测试数据的总组数。对于每组数据一行包含三个由空格分隔的整数 n、m (1≤n,m≤100) 和 k (1≤k≤n)。输出格式对于每组测试数据输出在最优策略下最终能够得到的正面朝上的硬币数量的期望值结果为一个实数精确到小数点后 3 位。输入输出样例输入6 2 1 1 2 3 1 5 4 3 6 2 3 6 100 1 6 100 2输出0.500 1.250 3.479 3.000 5.500 5.000好的题目我们就先说到这接下来是解析部分题目理解与分析题目描述了一个硬币游戏初始有n 枚硬币全部反面朝上即正面朝上的硬币数为 0。进行 m 次操作每次选择 k 枚硬币抛向空中每枚硬币以 0.5 的概率正面朝上或反面朝上。目标是经过 m 次操作后使正面朝上的硬币数尽可能多。我们需要求出在最优策略下最终正面朝上硬币数的期望值。关键点初始状态所有硬币反面朝上即正面朝上的硬币数为 0。操作规则每次选 kk 枚硬币抛掷后每枚硬币正面朝上的概率是 0.5反面朝上的概率也是 0.5。最优策略每次操作时如何选择 k 枚硬币使得最终正面朝上的硬币数期望最大。期望计算由于每次抛掷是独立的且每枚硬币正面朝上的概率是 0.5我们需要通过动态规划来跟踪正面朝上硬币数的概率分布并在每一步选择最优的 k 枚硬币。核心思路设当前正面朝上的硬币数为 i 反面朝上的硬币数为n-i。每次操作需要选k枚硬币。为了最大化最终正面朝上的硬币数我们应该优先选择反面朝上的硬币因为将它们抛掷后有 0.5 的概率变成正面而选择正面朝上的硬币抛掷后有 0.5 的概率变成反面这会减少正面朝上的硬币数。因此策略是尽可能多地选择反面朝上的硬币若反面硬币不足k枚则剩余的选择正面朝上的硬币。优化由于n,m≤100 k≤n 直接三维循环不可行但 xyk a和b的范围分别是 0∼x 和 0∼y 总组合数为(x1)(y1) 最大为 (k/21)²,当 k100 时50²2500m×n×2500100×100×25002.5×10⁷可以接受。预处理组合数 C(n,k) 和 0.5^n的幂次。接下来就是你们最喜欢的代码部分了这道题总体来说不是特别的难思路理清了之后就比较好做了。我考试时做的时候确实没有想到他竟然是一道普及的题我不是说我学的特好哈我也是错了好几次后才做对的。好了不说闲话了上代码。话说你们是喜欢没有注释的代码还是有注释的代码呢我写代码一般比较喜欢没注释的我在写代码前写的提示和伪代码最后都会删掉不然感觉怪怪的。参考代码带注释我认为有注释的是不是好理解一点所以加一个有注释的ps只是是我后期加上的如果不太理解的话可以私信我#include bits/stdc.h using namespace std; const int MAXN 105; double C[MAXN][MAXN]; double pow2[MAXN]; void precompute() { for (int i 0; i MAXN; i) { C[i][0] 1; for (int j 1; j i; j) { C[i][j] C[i-1][j-1] C[i-1][j]; } } pow2[0] 1.0; for (int i 1; i MAXN; i) { pow2[i] pow2[i-1] * 0.5; } } void solve() { int n, m, k; cin n m k; vectordouble dp(n 1, 0.0); dp[0] 1.0; for (int step 0; step m; step) { vectordouble np(n 1, 0.0); for (int i 0; i n; i) { if (dp[i] 0) continue; int r n - i; // 反面硬币数 int x min(r, k); // 选的反面硬币数 int y k - x; // 选的正面硬币数 double pe pow2[k];// 0.5^k for (int a 0; a x; a) { for (int b 0; b y; b) { int new_i i - y b a; double prob C[x][a] * C[y][b] * pe; np[new_i] dp[i] * prob; } } } dp np; } double ee 0.0; for (int i 0; i n; i) { ee i * dp[i]; } cout fixed setprecision(3) ee endl; } int main() { precompute(); int t; cin t; while (t--) { solve(); } return 0;//完结撒花 }参考代码赛时代码这个是我考试的时候写的代码没有注释的需要的可以自行取用不懂的不理解的可以来问我。#include bits/stdc.h using namespace std; const int MAXN 105; double C[MAXN][MAXN]; double pow2[MAXN]; void precompute() { for (int i 0; i MAXN; i) { C[i][0] 1; for (int j 1; j i; j) { C[i][j] C[i-1][j-1] C[i-1][j]; } } pow2[0] 1.0; for (int i 1; i MAXN; i) { pow2[i] pow2[i-1] * 0.5; } } void solve() { int n, m, k; cin n m k; vectordouble dp(n 1, 0.0); dp[0] 1.0; for (int step 0; step m; step) { vectordouble np(n 1, 0.0); for (int i 0; i n; i) { if (dp[i] 0) continue; int r n - i; int x min(r, k); int y k - x; double pe pow2[k]; for (int a 0; a x; a) { for (int b 0; b y; b) { int new_i i - y b a; double prob C[x][a] * C[y][b] * pe; np[new_i] dp[i] * prob; } } } dp np; } double ee 0.0; for (int i 0; i n; i) { ee i * dp[i]; } cout fixed setprecision(3) ee endl; } int main() { precompute(); int t; cin t; while (t--) { solve(); } return 0; }后记留言好了今天的讲解就到这里。附上我的AC记录如果有需要改正的地方或有不完美的地方欢迎私信我如果有不懂的欢迎私信我提问我会一一解答如果我回复的不是那么及时也请见谅马上开学了我比较忙。如果觉得我写的还行的话可以留下一个赞吗非常感谢。

相关新闻

Multimodal-Sentiment-Analysis 开源项目指南:目录结构、启动脚本与配置文件一次看懂

Multimodal-Sentiment-Analysis 开源项目指南:目录结构、启动脚本与配置文件一次看懂

Multimodal-Sentiment-Analysis 开源项目指南:目录结构、启动脚本与配置文件一次看懂 【免费下载链接】Multimodal-Sentiment-Analysis 多模态情感分析——基于BERTResNet的多种融合方法 项目地址: https://gitcode.com/gh_mirrors/mu/Multimodal-Sentiment-Analy…

2026/8/22 17:21:59 阅读更多 →
2023数学建模国赛深度解析:从优化设计到数据驱动的建模实战

2023数学建模国赛深度解析:从优化设计到数据驱动的建模实战

1. 赛题回顾与核心价值定位每年九月的那个周末,对于国内数百万理工科学生和指导老师而言,都是一个紧张而充满挑战的时刻——全国大学生数学建模竞赛(简称“国赛”)如期而至。2023年的赛题,在延续其“源于实际、强调应用…

2026/8/22 17:21:59 阅读更多 →
构建AI Agent技能包管理器:基于层次化作用域的Skilldex设计与实现

构建AI Agent技能包管理器:基于层次化作用域的Skilldex设计与实现

1. 项目概述:Skilldex 是什么,以及它要解决什么问题最近在折腾AI Agent开发,特别是基于Claude、GPT这类大模型构建自动化工作流时,一个痛点反复出现:技能复用太难了。我写了一个能精准解析PDF发票并提取结构化数据的Ag…

2026/8/22 17:21:59 阅读更多 →

最新新闻

小样本多类型医疗数据的机器学习建模实战

小样本多类型医疗数据的机器学习建模实战

1. 项目概述:为什么一个脑出血患者的院前指标,值得用五种机器学习模型反复“较劲”?我带过三届数学建模国赛和亚太杯的参赛队,也帮临床科室做过真实病历数据的建模支持。去年接手一个急诊科合作项目时,主任递给我一份E…

2026/8/22 18:05:09 阅读更多 →
KMS_VL_ALL_AIO 教程:一键本地 KMS 激活 Windows 和 Office,三步搞定

KMS_VL_ALL_AIO 教程:一键本地 KMS 激活 Windows 和 Office,三步搞定

KMS_VL_ALL_AIO 教程:一键本地 KMS 激活 Windows 和 Office,三步搞定 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO KMS_VL_ALL_AIO 是一个单文件 KMS 激活脚本&#xf…

2026/8/22 18:05:09 阅读更多 →
从数学建模竞赛到生态评估:数据驱动的植物多样性分析与空间建模实战

从数学建模竞赛到生态评估:数据驱动的植物多样性分析与空间建模实战

1. 项目概述:从竞赛题目到现实问题的映射去年带队参加江西省研究生数学建模竞赛,拿到“植物的多样性”这个题目时,我和队员们都觉得既熟悉又陌生。熟悉的是,“生物多样性”这个概念在生态学、环境科学领域早已是老生常谈&#xff…

2026/8/22 18:05:09 阅读更多 →
朴素贝叶斯多特征分类实战:从原理到工程优化的完整指南

朴素贝叶斯多特征分类实战:从原理到工程优化的完整指南

1. 项目缘起:从“垃圾邮件”到“多特征”的朴素贝叶斯进化如果你在十年前问我,机器学习里哪个算法最“朴素”又最实用,我会毫不犹豫地说是朴素贝叶斯。它的起点太经典了——垃圾邮件过滤。一封邮件,我们提取出“发票”、“免费”、…

2026/8/22 18:05:09 阅读更多 →
LLM科研应用的风险与应对:警惕AI辅助的意外后果

LLM科研应用的风险与应对:警惕AI辅助的意外后果

这次我们来看一个关于大语言模型(LLM)在科学研究中作为劳动力增强技术所引发的“意外后果”的深度探讨。这个话题并非聚焦于某个具体的开源工具或模型部署,而是指向一个更宏观、更值得警惕的现象:当科学家们普遍依赖LLM来辅助文献…

2026/8/22 18:05:09 阅读更多 →
《春秋正义》作者:孔子后裔孔颖达 ,撰书时称先祖为邹人纥,不是“邹”攀“孔”,而是孔一直拿“邹”的头来摇

《春秋正义》作者:孔子后裔孔颖达 ,撰书时称先祖为邹人纥,不是“邹”攀“孔”,而是孔一直拿“邹”的头来摇

孔颖达简历生卒:574‑648(初唐,北周生、贞观二十二年去世)字:冲远(仲达)籍贯:冀州衡水(今河北衡水),孔氏下博支(献县派)&a…

2026/8/22 18:04:09 阅读更多 →

日新闻

沉金PCB工艺实战指南:从设计到SMT焊接的可靠性保障

沉金PCB工艺实战指南:从设计到SMT焊接的可靠性保障

在电子硬件开发领域,PCB(印制电路板)的沉金工艺是提升产品可靠性和焊接质量的关键环节。对于需要高密度互连、长期稳定运行或高频信号传输的板卡,如“黍姐仿通行证”这类可能涉及身份识别、数据交互的硬件项目,选择正确…

2026/8/22 0:00:11 阅读更多 →
电气考研电路八月强化四步法:从知识体系到真题实战的闭环攻略

电气考研电路八月强化四步法:从知识体系到真题实战的闭环攻略

这次我们来看一个针对电气考研电路科目的学习规划项目。它不是软件工具,而是一套聚焦于8月份关键节点的备考策略。对于电气工程考研的同学来说,电路分析是专业课的重中之重,也是拉开分差的关键。进入8月,复习进入强化阶段&#xf…

2026/8/22 0:00:11 阅读更多 →
消除AI代码的“AI味”:Claude Code设计优化技能配置与实战指南

消除AI代码的“AI味”:Claude Code设计优化技能配置与实战指南

大家好,我是专注于前端开发与AI工具实践的技术博主。在日常使用 Claude Code 等AI编程助手时,你是否也遇到过这样的困扰:生成的代码功能上没问题,但代码风格、组件设计、交互逻辑总透着一股“AI味”——布局单调、样式简陋、交互生…

2026/8/22 0:00:11 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/21 3:21:33 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/22 8:09:09 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/21 6:07:56 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/21 16:42:28 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/22 7:31:03 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/22 3:22:48 阅读更多 →