拉力赛 (Standard IO)
题意/Description:
车展结束后,游乐园决定举办一次盛大的山道拉力赛,平平和韵韵自然也要来参加大赛。
赛场上共有n个连通的计时点,n-1条赛道(构成了一棵树)。每个计时点的高度都不相同(父结点的高度必然大于子结点),相邻计时点间由赛道相连。由于马力不够,所以韵韵的遥控车只能从高处驶向低处。而且韵韵的车跑完每条赛道都需花费一定的时间。
举办方共拟举办m个赛段的比赛,每次从第u个计时点到第v个计时点,当然其中有不少比赛韵韵的遥控车是不能参加的(因为要上坡)。平平想知道他能参加多少个赛段的比赛,并且想知道他完成这些赛段的总用时。
读入/Input:
第一行两个整数n,m。
接下来n-1行每行3个整数a、b、t。
表示韵韵的遥控车可以花t秒从第a个计时点到第b个计时点。
接下来m行每行2个整数u、v,意义如描述所示。
输出/Output:
第一行输出一个正整数,表示能参加的赛段数。
第二行输出一个正整数,表示总用时。
题解/solution:
求两个点的LCA,但是有一个现实条件就是,两个点之间一定要有一个点是另一个点的祖先,不然韵韵就无法参加(根据题意),所以判断一下就行。注意要用int64!!!
代码/Code:
typearr=recordy,w,next:longint;end;
varn,m,nm:longint;ans,anss:int64;tu:array [0..20001] of arr;use:array [0..10001] of boolean;go:array [0..10001,0..20] of longint;ls,deep,sum:array [0..10001] of longint;procedure add(o,p,ww:longint);
begininc(nm);with tu[nm] dobeginy:=p; w:=ww;next:=ls[o];ls[o]:=nm;end;
end;procedure dfs(x,last:longint);
vari:longint;
begini:=ls[x];while i>0 dowith tu[i] dobeginif y<>last thenbegingo[y][0]:=x;deep[y]:=deep[x]+1;sum[y]:=sum[x]+w;dfs(y,x);end;i:=next;end;
end;procedure try1(var x:longint; k:longint);
vari:longint;
beginfor i:=15 downto 0 doif ((1 shl i)) and k>0 then x:=go[x,i];
end;function LCA(x,y:longint):longint;
vari:longint;
beginif deep[x]>deep[y] then try1(x,deep[x]-deep[y]);if deep[y]>deep[x] then try1(y,deep[y]-deep[x]);if x=y then exit(x);for i:=15 downto 0 doif go[x,i]<>go[y,i] thenbeginx:=go[x,i];y:=go[y,i];end;exit(go[x,0]);
end;procedure init;
vari,x,y,w:longint;
beginreadln(n,m);for i:=1 to n-1 dobeginreadln(x,y,w);add(x,y,w); add(y,x,w);use[y]:=true;end;
end;procedure main;
vart,i,j,x,y:longint;
beginfor i:=1 to n doif not use[i] then t:=i;ans:=0; anss:=0;dfs(t,0);for i:=1 to 15 dofor j:=1 to n dogo[j,i]:=go[go[j,i-1],i-1];for i:=1 to m dobeginreadln(x,y);if lca(x,y)=x thenbegininc(ans);anss:=anss+(sum[y]-sum[x]);end;end;writeln(ans);write(anss);
end;begininit;main;
end.
转载于:https://www.cnblogs.com/zyx-crying/p/9319665.html
拉力赛 (Standard IO)相关推荐
- 4246. 【五校联考6day2】san (Standard IO)
4246. [五校联考6day2]san (Standard IO) Time Limits: 1000 ms Memory Limits: 262144 KB Detailed Limits D ...
- 2554. 【NOIP2011模拟9.7】帕秋莉·诺蕾姬 (Standard IO)
2554. [NOIP2011模拟9.7]帕秋莉·诺蕾姬 (Standard IO) Description 在幻想乡,帕秋莉·诺蕾姬是以宅在图书馆闻名的魔法使.这一天帕秋莉又在考虑如何加强魔法咒语的 ...
- JZOJ 1775. 合并果子2 (Standard IO)
1775. 合并果子2 (Standard IO) Time Limits: 1000 ms Memory Limits: 65536 KB Description 在一个果园里,多多已经将所有的果子 ...
- 1116. 【HNOI2008】T_OY(踢欧阳^_^) (Standard IO)斜率优化dp
1116. [HNOI2008]T_OY(踢欧阳^_^) (Standard IO) Time Limits: 1000 ms Memory Limits: 65536 KB Detailed L ...
- IBM x3850 X6 不开机 面板显示 sys voltage fault standard io book
IBM x3850 X6 服务器不开机 面板显示 sys voltage fault standard io book 如果有软件绑定主板,要维修主板哦,可加 w:cfx02100313(请备注)## ...
- 混合图 (Standard IO)
Description 有一张N个点,M1条有向边,M2条无向边组成的混合图.询问一个给所有无向边定向的方案.使得最终的图中没有环.保证一定有解. Input 第一行,三个数字N,M1,M2. 接下来 ...
- 帕秋莉·诺蕾姬 (Standard IO)
Description 在幻想乡,帕秋莉·诺蕾姬是以宅在图书馆闻名的魔法使.这一天帕秋莉又在考虑如何加强魔法咒语的威力.帕秋莉的魔法咒语是一个仅有大写字母组成的字符串,我们考虑从'A'到'Z'分别表示 ...
- 上学路线 (Standard IO)
题意/Description: 你所在城市的街道好像一个棋盘,有a条南北方向的街道,和b条东西方向的街道. 南北方向的a条街道从西到东依次编号为1到a,而东西方向的b条街道从南到北依次编 ...
- JZOJ100047.基因变异 (Standard IO)
\[Description\] 21 世纪是生物学的世纪,以遗传与进化为代表的现代生物理论越来越多的 进入了我们的视野. 如同大家所熟知的,基因是遗传因子,它记录了生命的基本构造和性能. 因此生物进化 ...
最新文章
- Imagination发布四款RISC-V CPU
- 你知道 Redis 可以实现延迟队列吗?
- 掌门教育微服务体系 Solar 第 3 弹:Nacos 企业级落地下篇
- linux rc.d的作用,init.d,rc.d详解 Linux运行时详解
- u-boot移植第三弹——移植2013.10u-boot到RealARM210 cortex-A8开发板(支持moviNAND_Fusing_Tool_v2.0)
- Stay Hungry Stay Foolish——网络学习平台分享
- MySQL字段类型解析
- Instance Object
- oracle 的逻辑结构设计,浅谈Oracle数据库逻辑结构
- 程序员PDF书籍下载
- python科赫雪花正方形_python—科赫曲线(科赫雪花小包裹)
- 小白入门大数据行业需要了解什么?
- nginx反向代理解封电信80端口
- 0xC0000005: 读取位置 0x00000000 时发生访问冲突
- linux 路由器 限速,Linux服务器限速WonderShaper使用方法 | 陌小九
- 收集UE4 优化Tips
- arnold 焦散效果渲染技巧
- FFmpeg支持QUIC
- 浅谈LOG日志的写法
- XMLHTTP小偷程序原理
热门文章
- [转]C++/CLI与C#常用语法对比
- Javascript typeof用法
- 超全的Go Http路由框架性能比较
- Android 卡片翻转动画效果
- docker: docker安装和镜像下载
- 基于阿里的Node全栈之路(二)阿里负载均衡的HTTPS优化方案
- Android自定义波浪加载圆形进度条——(自定义控件 一)
- 从系统的启动过程分析,为什么我们划分分区的时候 /sbin 、/bin、/lib、/dev不能做为独立的分区?...
- UITableView 滑动删除
- POJ-1436 线段树 区间更新