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

打卡信奥刷题(3290)用C++实现信奥题 P8966 觅光 | Searching for Hope (easy ver.)

P8966 觅光 | Searching for Hope (easy ver.)

题目背景

这是本题的简单版本。两个版本在100 % \bm{100 \%}100%数据范围的唯一区别是关于n \bm{n}n的限制。此版本中n ≤ 1000 \bm{n \le 1000}n1000


有梦中所向往的地方,也有现实中可望不可触及的远方。

我们正等待无数次的希望,新的纪元,生命不曾奏响终章。

顷刻间颠覆中的一切,天空坠落到海底,死死卡住呼吸者的全部。羽翼裹满刺骨的海水,悲伤到从此遗忘呼吸的意义。

明明与空气只隔着毫厘,却不想再尝试去呼吸。我开始明白,悲伤到了极点,也许不会流泪

神明借着生的名义,捏造出灰暗的真理。

泪水模糊眼眶,身躯坠进天空,泛白的天光,不得已照亮这一日的希望。

题目描述

现在有一棵n nn个节点的有根二叉树。

凡人与神明在这棵树上进行一个游戏。凡人需要从根投下若干个球,每个球带1 11单位正电荷或带1 11单位负电荷。

树上每一个点有容量,第i ii个点可以容纳c i c_ici个球。初始每一个点容纳的球数为0 00。我们称一个点被充满当且仅当它容纳的球的个数等于它的容量。

每一次一个球下落到一个点时:

  • 如果该点没有孩子节点或者所有孩子节点上都已经充满球,则停止,该点容纳的球的个数+ 1 +1+1
  • 如果该点恰有一个孩子节点未充满,则向那个孩子下落;
  • 如果有2 22个孩子节点均未充满:
    • 如果左侧子树中所有球的电荷代数和大于右侧子树所有球的电荷代数和,则如果当前球带正电则向右下落,否则向左下落;
    • 如果左侧子树中所有球的电荷代数和小于右侧子树所有球的电荷代数和,则如果当前球带正电则向左下落,否则向右下落;
    • 如果左侧子树中所有球的电荷代数和等于右侧子树所有球的电荷代数和,则由神明决定向哪个方向下落。

其中,电荷代数和指的是正电荷的数量减去负电荷的数量。

在游戏开始前,双方约定目标点u uu。在一个回合中,凡人选择这次投下的球的电性,神明按上述规则控制球的下落过程。当u uu被充满时,游戏结束。

凡人希望游戏回合数尽量少,神明希望游戏回合数尽量多。假设双方足够聪明。

对所有:1 ≤ u ≤ n 1\leq u\leq n1un,求游戏轮数r u r_uru

输入格式

第一行,一个正整数n nn

第二行,n − 1 n-1n1个整数f 2 , f 3 , … , f n f_2, f_3, \ldots, f_nf2,f3,,fn,其中f i f_ifi代表i ii的父亲的编号。

第三行,n nn个整数c 1 , c 2 , … , c n c_1, c_2, \ldots, c_nc1,c2,,cn

输出格式

输出一行,n nn个整数r 1 , r 2 , … , r n r_1, r_2, \ldots, r_nr1,r2,,rn

输入输出样例 #1

输入 #1

5 1 1 2 2 1 1 1 1 1

输出 #1

5 4 2 3 3

说明/提示

【数据范围】

本题采用捆绑测试。

子任务编号n ≤ n \len特殊性质分值
11000 10001000A11
210 1010B27
31000 1000100062
  • 特殊性质 A:树退化成一条以1 11为一端的链。
  • 特殊性质 B:c i = 1 c_i = 1ci=1

对于100 % 100\%100%的数据,2 ≤ n ≤ 1000 2 \le n \le 10002n1000,满足树是以1 11为根的二叉树,1 ≤ f i < i 1 \le f_i < i1fi<i1 ≤ c i ≤ 10 12 1 \le c_i \le {10}^{12}1ci1012

C++实现

#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;main(){ios::sync_with_stdio(false);intn;cin>>n;vector<int>p(n,-1),c(n),s(n);vector<array<int,2>>k(n,{-1,-1});for(inti=1;i<n;i++){intx;cin>>x;p[i]=--x;(~k[x][0]?k[x][1]:k[x][0])=i;}// 建树for(auto&i:c)cin>>i;function<void(int)>dfs=[&](intu){if(~k[u][0])dfs(k[u][0]),s[u]+=s[k[u][0]];if(~k[u][1])dfs(k[u][1]),s[u]+=s[k[u][1]];};// 预处理子树和s=c,dfs(0);for(inti=0;i<n;i++){intx=i,c=s[i];while(~p[x]){intb=(x==k[p[x]][0]?k[p[x]][1]:k[p[x]][0]);c+=min(c,~b?s[b]:0),x=p[x];}// 暴力找父亲,更新答案cout<<c<<' ';}cout<<endl;return0;}

后续

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

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

相关文章:

  • 有哪些真正好用的降AIGC工具?能同时过维普查重和高校AIGC检测的那种
  • VS Code 与 JetBrains 双平台联动:Trae 2.4 配置的 4 步实操指南
  • 从西部数据财报看HDD需求下滑:技术替代、市场周期与存储新格局
  • Go语言云原生开发:构建高可用微服务架构
  • DeepSeek DRY合规性审计报告(2024Q2内部泄露版):127个真实项目扫描数据揭示89%团队正在“伪遵循”
  • 2026年京东云OpenClaw/Hermes Agent配置Token Plan集成详细攻略
  • 别再死磕127.0.0.1了!用BurpSuite抓虚拟机流量,这个IP配置才是关键
  • LattePanda Mu:x86架构单板机在工业边缘计算与数字标牌中的应用
  • Taotoken用量看板如何帮助我清晰掌控API成本
  • 如何快速构建个人漫画图书馆:BiliBili-Manga-Downloader终极使用指南
  • 在Taotoken平台观测不同模型API调用的延迟与用量数据实践
  • 告别Postman?在IDEA里用RestfulTool插件直接调试Spring接口的完整流程
  • 贴胶产品的智能检测与质量判断
  • 测试工程师的健康管理:如何应对测试工作中的久坐和熬夜
  • 13-微信小程序商城 产品详情页布局实战(小程序毕业设计、前端开发、组件化实现)
  • 2026年超市便利店小程序靠谱服务商Top5
  • 测试工程师的阅读清单:测试人员必看的10本书
  • MicroSiP系统级封装:核心组件构成与内部电源设计深度解析
  • 【条件对抗生成网络】从理论到实践:CGAN如何实现可控图像生成
  • 语义搜索实战:从关键词到向量检索
  • 别再被数据线坑了!手把手教你用STLINK-V3E给NUCLEO-H7A3ZI-Q开发板下载程序(附驱动安装避坑指南)
  • CRM工单系统开发实战:分支流程引擎与全链路追踪的设计与实现
  • DeepSeek 两次降价打到 2 分钱、Kimi 再融 140 亿:2026 中国大模型没有终局,只有下一轮
  • 从Faster R-CNN到Cascade R-CNN:一个‘打补丁’思路如何刷爆COCO榜单?
  • (技术解析)面向极端天气的配电网韧性强化:应急移动电源预配置的鲁棒优化建模与求解
  • 测试工程师的写作技巧:如何写出受欢迎的测试文章
  • 从零到一:Deformable-DETR实战个人数据集训练与调优
  • 国内高校学生最适用的AI论文写作软件有哪些?
  • 避坑指南:展锐平台Camera驱动移植中那些容易出错的配置项(以OV08A10为例)
  • 开源3D打印人形机器人平台设计与实现