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

打卡信奥刷题(3321)用C++实现信奥题 P9208 虚人「无」

P9208 虚人「无」

题目背景

一点也不美丽的不死鸟。

那双锐爪,沾染了无辜的鲜血。

题目描述

给定二元序列{(vi,ci)}\{(v_i,c_i)\}{(vi,ci)}和一棵以111为根的有根树。第iii个点的点权是(vi,ci)(v_i,c_i)(vi,ci)

  • 定义一个非根节点的权值为其子树内的ccc的积乘上其子树补的vvv的积。
  • 定义一个根节点的权值为其子树内的ccc的积。

形式化的讲,若uuu不为根节点,则uuu的权值fuf_ufu为:

fu=∏v∈substree⁡(u)cv×∏v∉substree⁡(u)vvf_u=\prod\limits_{v\in \operatorname{substree}(u)} c_v\times \prod\limits_{v\notin \operatorname{substree}(u)} v_vfu=vsubstree(u)cv×v/substree(u)vv

否则,其权值fuf_ufu为:

fu=∏v=1ncvf_u=\prod\limits_{v=1}^n c_vfu=v=1ncv

试求整棵树所有节点的权值之和,答案对mmm取模。请注意:保证m\bm mm是质数

输入格式

第一行两个正整数n,mn,mn,m

接下来n−1n-1n1行,每行两个数u,vu,vu,v,表示u,vu,vu,v之间有一条边。

接下来一行nnn个数,表示c1,2,…,nc_{1, 2, \dots, n}c1,2,,n

接下来一行nnn个数,表示v1,2,…,nv_{1, 2, \dots, n}v1,2,,n

输出格式

输出一个数,表示答案对mmm取模后的结果。

输入输出样例 #1

输入 #1

3 998244853 1 2 1 3 2 1 2 1 2 2

输出 #1

10

输入输出样例 #2

输入 #2

5 998244353 1 2 1 3 1 4 4 5 5 5 5 2 3 6 6 1 5 3

输出 #2

4656

说明/提示

样例解释

(图片有误,应该交换v,cv,cv,c的权值。)

数据范围及约定

对于100%100\%100%的数据,满足1≤n≤3×1051\le n\leq 3\times 10^51n3×1051≤vi,ci,m≤1091\leq v_i,c_i,m\leq 10^91vi,ci,m109

C++实现

#include<bits/stdc++.h>usingnamespacestd;#definelllonglongconstintN=3e5+3;intn,m;ll c[N],v[N],L[N],R[N],id[N],tot,ans;ll sc[N],lv[N],rv[N];vector<int>e[N];voiddfs(intx,intf){sc[x]=c[x];L[x]=++tot,id[tot]=x;for(autoy:e[x]){if(y==f)continue;dfs(y,x);sc[x]=(sc[x]*sc[y])%m;}R[x]=tot;}intmain(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);//个人习惯,输入输出优化cin>>n>>m;for(inti=1;i<n;i++){intx,y;cin>>x>>y;e[x].push_back(y);e[y].push_back(x);}for(inti=1;i<=n;i++)cin>>c[i];for(inti=1;i<=n;i++)cin>>v[i];dfs(1,0);lv[0]=rv[n+1]=1;for(inti=1;i<=n;i++)lv[i]=(lv[i-1]*v[id[i]])%m;for(inti=n;i>0;i--)rv[i]=(rv[i+1]*v[id[i]])%m;ans=sc[1]%m;for(inti=2;i<=n;i++)ans=(((lv[L[i]-1]*rv[R[i]+1])%m*sc[i])%m+ans)%m;cout<<ans;return0;}

后续

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

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

相关文章:

  • Unity着色器从入门到实战:手写HLSL与Custom Render Pass
  • CANoe FDX协议实战:手把手教你用Wireshark抓包调试UDP通信(避坑指南)
  • SC-CRAM:基于磁隧道结的存内随机计算架构解析与应用
  • 室内场景地理定位:融合颜色特征增强图像嵌入的实践方案
  • 如何5分钟在通达信上实现专业级缠论分析:ChanlunX开源插件完整指南
  • ChanlunX缠论插件:快速掌握通达信自动缠论分析的终极指南
  • 如何快速提升游戏效率:英雄联盟智能自动化工具的完整指南
  • 从PN结到二极管:用Python模拟玻尔兹曼分布与扩散电流(附完整代码)
  • 嵌入式开发避坑指南:LwIP内存堆管理,为什么你的FreeRTOS项目会内存泄漏?
  • 【重磅】市场的深圳朋友圈广告代理口碑排行 - 服务品牌热点
  • Qt网络请求Postman复现失败的四大原因与排查指南
  • LGTV Companion终极指南:5步实现LG电视与Windows电脑智能联动
  • 【重磅】优秀的深圳视频号广告代理推荐排行 - 服务品牌热点
  • 跨平台资源下载神器:3分钟搞定全网无水印视频下载
  • 终极指南:如何零成本获取明日方舟12000+专业游戏美术资源
  • HC8311高效率,18V输入,3A负载同步整流DC-DC降压转换IC
  • AArch64内存模型中的推测执行安全机制与屏障指令详解
  • Creo浮动许可回收,5款工具功能对比
  • 从WannaCry到实战:手把手教你用Kali和Metasploit复现永恒之蓝漏洞(附修复指南)
  • PersistentWindows终极指南:快速解决Windows窗口记忆难题的完整方案
  • 机器学习势函数驱动的高压材料全局结构搜索:以铋基化合物为例
  • DeepCAD深度解析:基于深度学习的CAD模型生成终极指南
  • 基于SAM的SAR图像语义分割:参数高效微调与类别感知解码器设计
  • 超声波冷热量表十大品牌排名:2026国产替代浪潮下的选型指南与硬实力解析 - 仪表品牌榜
  • AWS S3与EFS混合存储实战:生产级配置、成本优化与故障排查
  • Bokeh交互可视化实战:从安装踩坑到Glyph数据映射
  • 经验模态分解(EMD)原理、实现与工程实践全解析
  • 别再重启了!用这个第三方驱动让MCGS触摸屏在线修改Modbus地址(附汉步驱动5.002版)
  • 量子噪声对傅里叶模型的影响与优化策略
  • HC8310高效500 kHz,18 V输入,2 A负载,同步整流降压DC-DC转换器