当前位置: 首页 > news >正文

打卡信奥刷题(3250)用C++实现信奥题 P8579 [CoE R5/Stoi2029] 半岛铁盒

P8579 [CoE R5/Stoi2029] 半岛铁盒

题目背景

为什么这样子 你拉着我 说你有些犹豫
怎么这样子 雨还没停 你就撑伞要走
已经习惯 不去阻止你 过好一阵子 你就会回来
印象中的爱情 好像顶不住那时间
——《半岛铁盒》

题目描述

题意简述

给定一个n nn个顶点m mm条边的无向图,可能有重边自环,可能不连通。

初始时每个顶点有点权,点权为随机正实数。现在需要重新分配每个顶点的点权,使得:

  1. 相邻顶点的点权中较大者与较小者之比不超过x xx

  2. 点权总和不变;

  3. 每个顶点的点权不小于初始时的p q \dfrac{p}{q}qp

求最小的x ≥ 1 x \ge 1x1,使得对于给定的图,无论初始点权如何,均存在一种满足上述要求的重新分配方式。


原版题面

神在半岛铁盒里创建了一个世界。

这个世界由n nn个地域和地域之间的m mm条通道组成,每条通道连接两个地域。创世时每个地域有一定的气压,气压为正数。

由于世界刚刚创建,比较混乱,所以两个地域之间可能有多条通道相连,一个地域也有可能有通道连接到自身,两个地域也可能无法通过若干条通道相互通行。

由于通道连接的两个地域气压之比(大比小,下同)过大时会在通道里形成强风,使得跨地域旅行非常危险,所以造世神决定调整每个地域的气压使得每条通道连接的两个地域气压之比都不超过安全比值x xx。显然x ≥ 1 x \ge 1x1

由于各种守恒定律被打破会很麻烦,所以神希望调整前后所有地域的气压之和不变。

由于世界中的生物无法在过低的气压中生存但对高气压的适应力强,因此每个地域改变后的气压必须不低于初始的p q \dfrac{p}{q}qp

由于创世时气压不受神控制地随机,所以神希望安全比值x xx满足无论初始气压如何都存在一种合适的调整气压的方法。

由于通道越宽敞,通行越舒适,但是安全比值x xx也越小,因此神想要求出满足要求的最小安全比值x xx

由于神忙着处理创世事务,所以他钦定你来解决这个问题。

输入格式

第一行四个正整数n , m , p , q n,m,p,qn,m,p,q,含义如题。

接下来m mm行,每行两个正整数u , v u,vu,v表示一条通道连接的两个地域的编号。

输出格式

输出一个实数表示x xx的最小值,保留7 77位小数。

本题采用 Special Judge,如果你的答案与参考答案的差值不超过参考答案值的10 − 4 10^{-4}104倍即为通过。

输入输出样例 #1

输入 #1

3 2 1 2 1 2 2 3

输出 #1

2.0000000

输入输出样例 #2

输入 #2

10 20 13 37 1 2 1 3 1 5 2 4 2 5 2 6 3 4 3 5 3 7 3 9 3 10 4 6 4 7 4 8 5 7 5 9 7 8 7 9 7 10 9 10

输出 #2

3.6903390

说明/提示

数据范围

对于10 % 10\%10%的数据,n p ≤ q np \le qnpq

对于另外20 % 20\%20%的数据,有一个地域和其他所有地域之间有通道相连;

对于另外30 % 30\%30%的数据,通道构成一棵树。

对于100 % 100\%100%的数据,1 ≤ u , v ≤ n ≤ 10 3 1 \le u,v \le n \le 10^31u,vn1031 ≤ m ≤ 3 × 10 4 1 \le m \le 3 \times 10^41m3×1041 ≤ p < q ≤ 10 7 1 \le p<q \le 10^71p<q107

C++实现

#include<cstdio>#definergregister#definelllonglong#definedblongdoubleintn,m,p,q,u,v,d;inthead[1003],cnt;intdep[1003],que[1003],hd,tl;structedge{intnxt,to;}e[60007];inlinevoidadd(intx,inty){e[++cnt].nxt=head[x],e[cnt].to=y,head[x]=cnt;e[++cnt].nxt=head[y],e[cnt].to=x,head[y]=cnt;}ll a[1003];inlinevoidbfs(ints){que[++tl]=s,dep[s]=0;while(hd<=tl){u=que[hd],++a[dep[u]],++hd;for(rginti=head[u];i;i=e[i].nxt){v=e[i].to;if(~dep[v])continue;que[++tl]=v,dep[v]=dep[u]+1;}}d=dep[u];}inlinedbcalc(db x){db res=a[d];for(rginti=d-1;~i;--i)res=res/x+a[i];returnres;}inlinedbsolve(){db l=1,r=1e10,md,rs,tp;for(rginti=0;i<=d;++i)a[i]*=p;while(r-l>=1e-8){md=(l+r)/2,rs=-q,tp=1;for(rginti=0;i<=d;++i){rs+=a[i]*tp,tp/=md;}if(rs>0)l=md;elser=md;}returnl;}db x,y;intmain(){scanf(" %d %d %d %d",&n,&m,&p,&q);x=1;if(n*p<=q)returnputs("1.0000000"),0;for(rginti=0;i<m;++i){scanf(" %d %d",&u,&v);if(u!=v)add(u,v);}for(rginti=1;i<=n;++i){for(rgintj=0;j<=n;++j)dep[j]=-1,a[j]=0;hd=1,tl=0,bfs(i),y=solve();if(y>x)x=y;}printf("%.7Lf\n",x);return0;}

后续

接下来我会不断用C++来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现,记录日常的编程生活、比赛心得,感兴趣的请关注,我后续将继续分享相关内容

http://www.jsqmd.com/news/807549/

相关文章:

  • Arm ETE事件控制寄存器TRCEVENTCTL0R/1R配置指南
  • 软件产品线工程中的变体管理实践与挑战
  • 2026 AI 刚需:Claude Code 稳定使用方案
  • 仅限前500位K8s SRE获取:DeepSeek企业级Helm Chart安全加固清单(含OPA策略模板+SBOM生成脚本)
  • 打卡信奥刷题(3252)用C++实现信奥题 P8591 『JROI-8』颅脑损伤 2.0
  • Arm ML处理器:边缘智能的算力引擎与优化实践
  • Landslide:内核并发错误检测的系统化测试工具
  • 为OpenClaw AI Agent集成Langfuse:实现LLM可观测性与数据驱动优化
  • 从200行JSON-RPC到通用微服务:用libhv和cJSON手搓一个轻量级C语言后端
  • 基于React、GraphQL与Prisma的披萨店订单管理系统全栈架构解析
  • 【Midjourney Basic计划终极性价比报告】:用200次生成任务实测,算清每张图成本、等待时长与成功率衰减曲线
  • IdeS蛋白酶的研究进展与应用潜力
  • 2026年论文降重降AI不用愁!这款工具帮你一键搞定 - 降AI实验室
  • AI Control Framework:将AI生成代码转化为生产级软件的纪律系统
  • SAP-SD进阶实战:POD分批确认与拆分开票的增强实现
  • DownKyi:重新定义B站视频资源管理的开源解决方案
  • docker vllm 开机启动
  • 2026AI趋势:多模态、Agent与端侧之争
  • 横空出世!IDEA最强MyBatis插件来了,功能很全!
  • 开源开发者借助GPT-5.5创建AMD Promontory 21 xHCI温度传感器驱动
  • 为什么顶尖AI工程团队在48小时内全部升级Claude 3.5 Sonnet?——从Token效率、工具调用到JSON Schema原生支持的6个致命优势
  • 对话式AI学习助手:构建个性化计算机科学教学系统
  • 飞机环境控制系统仿真技术与Flowmaster建模实践
  • 3分钟搞定Windows PDF处理:Poppler Windows版完全指南
  • 从RISC-V到SSITH:构建下一代硬件安全架构的开放之路
  • 【独家逆向验证】:ChatGPT 2026底层采用混合稀疏MoE-Transformer v3架构,参数激活率动态压缩至12.3%,推理成本下降61%
  • 火山引擎发布 Agent Plan:新增多模态模型与 Harness 工具,引入统一计费单位
  • 从零实现Transformer:第 3 部分 - 掩码多头注意力的掩码广播(Broadcasting of Masks in Masked Multi-Head Attention)
  • RimWorld模组开发新范式:Riml元语言工具提升开发效率
  • VMware Unlocker 3.0:在普通PC上运行macOS虚拟机的终极指南