news 2026/5/20 21:25:47

打卡信奥刷题(3291)用C++实现信奥题 P8971 『GROI-R1』 虹色的彼岸花

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
打卡信奥刷题(3291)用C++实现信奥题 P8971 『GROI-R1』 虹色的彼岸花

P8971 『GROI-R1』 虹色的彼岸花

题目背景

少年身着春季校服的深灰色外套与黑色短裤,外套内是白净的衬衫。

他的右手不知为何缠着绷带,右眼用头发挡得严严实实,扑面而来的是一种神秘感。

一瓣鲜红的彼岸花,在教室上空无人在意之处打旋。

玘的身世,总是一个谜题吧。

「所以你到底是什么人,又为什么要来这里!」

可是彼岸花显然不想让你知道这些。

题目描述

玘给了寒一棵编号为1∼n1\sim n1n的树,这棵树上每个点都有一个点权,同时有些边有边权,有些边没有边权。可是玘把每一个点的点权删除了。寒只知道点权都是整数,而且在lllrrr之间(包含端点)。而且,点权和边权有着下面的特殊关系:

  • 对于有边权的边,要求连接的两个点的点权和为边权

  • 对于没有边权的边无限制

玘问寒这棵树有多少种不同的点权填写方式。两种填写方式不同,当且仅当至少存在一个点的点权不同。可是寒不会做这个题。

寒请你解决这个问题。

输入格式

本题有多组测试数据。

第一行一个整数TTT,代表测试数据组数。

对于每一组测试数据:

第一行三个整数n,l,rn,l,rn,l,r,代表树上点的个数是nnn,点权的范围是[l,r][l,r][l,r]

接下来n−1n-1n1行,每行先输入一个整数opopopop=0op=0op=0表示这条边没有边权,op=1op=1op=1表示这条边有边权。

  • 如果op=0op=0op=0,再输入两个整数u,vu,vu,v,表示这条边连接u,vu,vu,v两个点。

  • 如果op=1op=1op=1,再输入三个整数u,v,wu,v,wu,v,w,表示有一条权值为www的边连接u,vu,vu,v两个点。

输出格式

对于每个测试点,输出一行一个整数,代表点权填写方式的个数。答案对109+710^9+7109+7取模。

输入输出样例 #1

输入 #1

2 6 0 4 1 1 2 2 1 2 3 4 1 3 4 2 0 2 5 1 4 6 3 6 -1 4 1 1 2 4 0 2 3 0 3 4 0 2 5 0 4 6

输出 #1

5 6480

说明/提示

样例解释

对于样例的第一组测试数据,可以得到下图:

555种填写方式分别为:

{0,2,2,0,0,3}{0,2,2,0,1,3}{0,2,2,0,2,3}{0,2,2,0,3,3}{0,2,2,0,4,3}\{0,2,2,0,0,3\}\\\{0,2,2,0,1,3\}\\\{0,2,2,0,2,3\}\\\{0,2,2,0,3,3\}\\\{0,2,2,0,4,3\}{0,2,2,0,0,3}{0,2,2,0,1,3}{0,2,2,0,2,3}{0,2,2,0,3,3}{0,2,2,0,4,3}

可以证明,不存在别的填写方式。

样例输入中,为了直观,添加了空行。实际数据中不存在多余空行。

数据范围

本题采用捆绑测试。

子任务编号数据范围特殊性质分值
Subtask1\text{Subtask1}Subtask11≤n≤101\le n\le 101n100≤l,r≤50\le l,r\le50l,r5151515
Subtask2\text{Subtask2}Subtask21≤n≤2×1051\le n\le 2\times 10^51n2×1050≤l,r≤50\le l,r\le50l,r5202020
Subtask3\text{Subtask3}Subtask31≤n≤101\le n\le 101n10−109≤l,r≤109-10^9\le l,r\le 10^9109l,r109151515
Subtask4\text{Subtask4}Subtask41≤n≤2×1051\le n\le 2\times10^51n2×105−109≤l,r≤109-10^9\le l,r\le 10^9109l,r109101010
Subtask5\text{Subtask5}Subtask51≤n≤2×1051\le n\le 2\times10^51n2×105−109≤l,r≤109-10^9\le l,r\le 10^9109l,r109404040

特殊性质:保证每条边都无边权。

对于100%100\%100%的数据,保证1≤T≤51\le T \le 51T51≤n≤2×1051\le n\le 2\times10^51n2×1051≤∑n≤1061\le \sum n\le 10^61n106−109≤l≤r≤109-10^9\le l\le r \le 10^9109lr109−109≤w≤109-10^9\le w\le 10^9109w109op∈{0,1}op\in\{0,1\}op{0,1}

C++实现

#include<bits/stdc++.h>usingnamespacestd;constintN=2e5+5,mod=1e9+7;structnode{intto,next,w;}e[N<<1];longlongl,r;longlongn,t,cnt,ans;longlongh[N];longlongll,rr,x,y,op,w;boolvis[N];voidLink(intx,inty,intw){e[++cnt].to=y;e[cnt].next=h[x];e[cnt].w=w;h[x]=cnt;}voiddfs(intx,intk,intsign){vis[x]=true;longlongnl=l-k,nr=r-k;//解不等式if(sign==-1)swap(nl,nr),nl=-nl,nr=-nr;ll=max(ll,nl),rr=min(rr,nr);//更新左极值、右极值for(inti=h[x];i;i=e[i].next){if(!vis[e[i].to])dfs(e[i].to,e[i].w-k,-sign);//计算k和sign}}intmain(){cin>>t;while(t--){cin>>n>>l>>r;memset(vis,false,sizeof(vis));//多测清空memset(e,0,sizeof(e));memset(h,0,sizeof(h));cnt=0;ans=1;for(inti=1;i<=n-1;i++){cin>>op>>x>>y;if(op==1)cin>>w;elsecontinue;//忽略无边权的边Link(x,y,w);Link(y,x,w);}for(inti=1;i<=n;i++){ll=l,rr=r;if(!vis[i]){dfs(i,0,1);//从自己开始,自己的k是0,sign是1if(rr<ll)ans*=0;//更新范围elseans=ans*(rr-ll+1)%mod;}}cout<<ans<<endl;}return0;}

后续

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/20 21:25:47

实测Orange Pi 5的RK3588S性能:CoreMark跑分17979,比你想的强多少?

Orange Pi 5性能深度评测&#xff1a;RK3588S芯片的实战表现与选型指南 在单板计算机领域&#xff0c;性能与价格的平衡一直是开发者关注的焦点。Orange Pi 5凭借瑞芯微RK3588S芯片的强劲表现&#xff0c;正在掀起一股新的热潮。这款售价仅千元左右的开发板&#xff0c;其CoreM…

作者头像 李华
网站建设 2026/5/20 21:19:13

CTF靶场实战:手把手教你用PHP异或绕过字符限制,拿下SUCTF 2019 EasyWeb

CTF靶场实战&#xff1a;PHP异或运算绕过字符限制的深度解析 第一次参加CTF比赛时&#xff0c;面对那道过滤了所有字母数字的Web题&#xff0c;我盯着屏幕发呆了半小时。直到发现特殊符号也能构造出有效代码&#xff0c;才意识到安全攻防的本质往往在于思维方式的突破。本文将带…

作者头像 李华
网站建设 2026/5/20 21:18:09

Arm SPE性能分析技术详解与实践指南

1. SPE性能分析技术概述SPE&#xff08;Statistical Profiling Extension&#xff09;是Arm架构中的一种硬件性能分析扩展&#xff0c;特别适用于现代处理器微架构层面的性能诊断。与传统的PMU&#xff08;Performance Monitoring Unit&#xff09;采样相比&#xff0c;SPE通过…

作者头像 李华
网站建设 2026/5/20 21:07:19

别只堆模型了!正大杯评委视角:什么样的市场调研报告能拿高分?

评委视角&#xff1a;市场调研报告高分的底层逻辑与实战策略 1. 从数据堆砌到洞察生成&#xff1a;构建完整研究逻辑链 在评审过数百份市场调研报告后&#xff0c;我发现90%的参赛队伍都陷入了一个共同误区——将复杂的数据分析等同于高质量研究。实际上&#xff0c;真正能打动…

作者头像 李华