vijos p1460——拉力賽

描述

車展結束后,游樂園決定舉辦一次盛大的山道拉力賽,平平和韻韻自然也要來參加大賽。

賽場上共有n個連通的計時點,n-1條賽道(構成了一棵樹)。每個計時點的高度都不相同(父結點的高度必然大于子結點),相鄰計時點間由賽道相連。由于馬力不夠,所以韻韻的遙控車只能從高處駛向低處。而且韻韻的車跑完每條賽道都需花費一定的時間。

舉辦方共擬舉辦m個賽段的比賽,每次從第u個計時點到第v個計時點,當然其中有不少比賽韻韻的遙控車是不能參加的(因為要上坡)。平平想知道他能參加多少個賽段的比賽,并且想知道他完成這些賽段的總用時。

賽道皆為單向。

格式

輸入格式

第一行兩個整數n,m。

接下來n-1行每行3個整數a、b、t。

表示韻韻的遙控車可以花t秒從第a個計時點到第b個計時點。

接下來m行每行2個整數u、v,意義如描述所示。

輸出格式

第一行輸出一個正整數,表示能參加的賽段數。

第二行輸出一個正整數,表示總用時。

樣例1

樣例輸入1

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

樣例輸出1

1
2

限制

各個測試點1s

提示

第一個計時點的高度是最高的;
u≠v;
對于50%的數據 n≤1000 m≤1000;
對于100%的數據 n≤10000 m≤100000;
答案小于2^64。

?

LCA,只用記錄下deep就可以了,LCA判斷x和y的公共祖先是否為x或y若是的話加上時間即可。

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<cmath>
 4 #include<cstring>
 5 using namespace std;
 6 const int maxn=10005;
 7 int fa[maxn][20],deep[maxn];
 8 int head[maxn],nextn[maxn],tov[maxn],w[maxn];
 9 int pd[maxn];
10 int n,m,tot;int d[maxn];
11 long long t,ans;
12 void go(int x,int y,int z)
13 {
14     tot++;
15     nextn[tot]=head[x];
16     head[x]=tot;
17     tov[tot]=y;
18     w[tot]=z;
19 }
20 
21 void dfs(int x)
22 {
23     int v=head[x];
24     while(v)
25     {
26         if(pd[tov[v]]==false)
27         {
28             fa[tov[v]][0]=x;
29             deep[tov[v]]=deep[x]+1;
30             d[tov[v]]=d[x]+w[v];
31             pd[tov[v]]=true;
32             int ii=0,pos=x;
33             while(fa[pos][ii])
34             {
35                 fa[tov[v]][ii+1]=fa[pos][ii];
36                 pos=fa[pos][ii];        
37                 ii++;
38             }
39             dfs(tov[v]);
40         }
41         v=nextn[v];
42     }
43 }
44 void lca(int x,int y)
45 {
46     if(deep[x]>deep[y])return ;
47     int m=deep[y]-deep[x];
48     int ii=0;
49     int k=y;
50     while(m)
51     {
52         if(m&1)y=fa[y][ii];
53         m=(m>>1);
54         ii++;
55     }
56     if(x!=y)return ;
57     ans++;
58     t+=d[k]-d[x];
59 }
60 int main()
61 {
62     scanf("%d%d",&n,&m);
63     for(int i=1;i<=n-1;i++)
64     {
65         int x,y,z;
66         scanf("%d%d%d",&x,&y,&z);
67         go(x,y,z);
68     }
69     deep[1]=1;pd[1]=true;
70     dfs(1);
71     for(int i=1;i<=m;i++)
72     {
73         int x,y;
74         scanf("%d%d",&x,&y);
75         lca(x,y);
76     }
77     printf("%I64d\n",ans);
78     printf("%I64d\n",t);
79     return 0;
80 }

?

轉載于:https://www.cnblogs.com/937337156Zhang/p/6052410.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/373497.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/373497.shtml
英文地址,請注明出處:http://en.pswp.cn/news/373497.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mysql acid_Mysql中ACID的原理

原子性 (Atomicity)原子性是指一個事務是一個不可分割的工作單位&#xff0c;其中的操作要么都做&#xff0c;要么都不做。隔離性 (Isolation)隔離性是指多個事務并發執行的時候&#xff0c;事務內部的操作與其他事務是隔離的&#xff0c;并發執行的各個事務之間不能互相干擾…

MongoDB 自動刪除集合中過期的數據——TTL索引

簡介 ? TTL (Time To Live, 有生命周期的) 索引是特殊單字段索引&#xff0c;MongoDB可以用來在一定時間后自動從集合中刪除文檔的特殊索引。 這對于某些類型的數據非常好&#xff0c;例如機器生成的事件數據&#xff0c;日志和會話信息&#xff0c;這些信息只需要在數據庫中…

PLSQL 經常自動斷開失去連接的解決過程

問題背景&#xff1a; 情況是這樣的&#xff0c;很多開發同事的PLSQL上班時間開著8個小時&#xff0c;有時候他們出去抽煙后或者中午吃完飯&#xff0c;回來在PLSQL上面執行就報錯無響應&#xff0c;然后卡住了半天動彈不了&#xff0c;非得重新登錄plsql才生效&#xff0c;我猜…

使用Cobertura,JUnit,HSQLDB,JPA涵蓋您的測試

你好&#xff01;你好嗎&#xff1f; 今天讓我們談談一個非常有用的工具&#xff0c;名為“ Cobertura”。 該框架與我們在另一篇文章中看到的Emma框架具有相同的功能。 Cobertura和Emma之間的主要區別在于Cobertura顯示帶有圖形的簡歷頁面。 如果要查看有關該主題的其他主題…

fedora mysql gui_fedora8安裝 mysql++失敗!!裝了一個晚上沒搞定!!傷心阿!

fedora8安裝 mysql失敗&#xff01;&#xff01;裝了一個晚上沒搞定&#xff01;&#xff01;傷心阿&#xff01;發布時間:2008-02-24 05:15:27來源:紅聯作者:lygzx[rootF8 mysql-3.0.0]# ./configure --w/usr/lib/mysqlconfigure: error: unrecognized option: --w/usr/lib/my…

MongoDB 數組類型查詢 —— $elemMatch 操作符

描述 $elemMatch 數組查詢操作用于查詢數組值中至少有一個能完全匹配所有的查詢條件的文檔。語法格式如下&#xff1a; { <field>: { $elemMatch: { <query1>, <query2>, ... } } }如果只有一個查詢條件就沒必要使用 $elemMatch。 限制 不能指定 $where 查…

MVC4 Action 方法的執行

1. ActionInvoker 的執行&#xff1a; 在MVC 中 包括Model綁定與驗證在內的整個Action的執行是通過一個名為ActionInvoker的組件來完成的。 它同樣具有 同步/異步兩個版本。 分別實現了接口 IActionInvoker /IAsyncActionInvoker。 ASP.NET MVC 中真正用于Action方法同步和異步…

C# 基礎知識總結

要學好C#&#xff0c;基礎知識的重要性不言而喻&#xff0c;現將常用到的一些基礎進行總結&#xff0c;總結如下&#xff1a; 01. 數據類型轉換&#xff1a; 強制類型轉換(Chart--> int): char crA; int i (int)(cr); 02. 委托/匿名函數/Lamda表達式&#xff1a; 委托是匿…

Java注釋和真實世界的Spring示例

“注釋”是編程語言定義的一種&#xff0c;用作“標記”。 可以將它們視為編程語言引擎可以理解的注釋行。 它們不會直接影響程序的執行&#xff0c;但是會在需要時間接影響。 定義 注釋使用interface關鍵字定義&#xff0c;并且與接口相似。 它具有定義類似于接口方法的屬性。…

scrapy+mysql+pipeline+更新數據_python3+Scrapy爬蟲實戰(二)—— 使用pipeline數據保存到文本和數據庫(mysql)...

前言保存本地存儲Json數據配置setting保存數據庫創建數據庫創建表編寫pipelines配置setting本文是對上篇文章所講的代碼進一步優化&#xff0c;回看可以點這里&#xff0c;代碼就直接在上一篇代碼中進行改造&#xff0c;沒有的小伙伴可以在這里下載。前言Scrapy 提供了 pipelin…

NYOJ 44 子串和

子串和 時間限制&#xff1a;5000 ms | 內存限制&#xff1a;65535 KB難度&#xff1a;3描述 給定一整型數列{a1,a2...,an}&#xff0c;找出連續非空子串{ax,ax1,...,ay}&#xff0c;使得該子序列的和最大&#xff0c;其中&#xff0c;1<x<y<n。 輸入 第一行是一個…

學習進度條

學習進度條 周次 學習時間 新編寫代碼行數 博客量&#xff08;篇&#xff09; 學到知識點 第一周 160 0 1 github的使用和認識軟件工程這門課的價值。 第二周 160 130 3 復利的計算和Github的一些簡單操作還有就是進行項目的開發分析&#xff0c;還有就是對…

ARM基礎

1.  將32位a的【7&#xff1a;4】改成0101 -> a a&(~(0xF << 4)) | (0x5 << 4)&#xff1b; 2.  32位&#xff1a;單次處理數據32位。 3.  對于CPU而言&#xff0c;一切皆內存&#xff1b; 4.  DMA總線&#xff1a;不經過CPU直接在內存和內存間交換…

使用Jolokia和JMX進行客戶端服務器監視

Java監視工具的選擇非常廣泛&#xff08;由Google提供的隨機選擇和順序&#xff09;&#xff1a; javamelody 壓力探頭 JVisualVM 控制臺 賈蒙 Java JMX Nagios插件不適用 此外&#xff0c;還有各種專用工具&#xff0c;例如ActiveMQ &#xff0c; JBoss &#xff0c; Qu…

圖書管理系統數據字典_2. 結構化——數據字典

返回目錄&#xff1a;Chilan Yuk&#xff1a;軟件工程分析設計圖庫目錄?zhuanlan.zhihu.com一、基本知識用于定義數據流和數據存儲的結構&#xff0c;并給出構成所給的數據流和數據存儲的各數據項的基本數據類型。數據字典中應該包括關于數據的如下信息一般信息&#xff08;名…

HDOJ 5184 Brackets 卡特蘭數擴展

既求從點(0,0)僅僅能向上或者向右而且不穿越yx到達點(a,b)有多少總走法... 有公式: C(ab,min(a,b))-C(ab,min(a,b)-1) /// 折紙法證明卡特蘭數: http://blog.sina.com.cn/s/blog_6917f47301010cno.html Brackets Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65…

010-python基礎-數據類型-字符串操作

1、移除空白 1 username.strip() 2、分割 1 names "alex,jack,rain" 2 names_1 names.split(",") #  字符串分割之后變成列表 3 print(names_1) 4 #輸出 5 [alex, jack, rain] 3、合并列表各元素成為字符串 1 names_1 [alex, jack, rain]2 names_2…

重復次數最多的 子串_每日算法系列【LeetCode 424】替換后的最長重復字符

題目描述給你一個僅由大寫英文字母組成的字符串&#xff0c;你可以將任意位置上的字符替換成另外的字符&#xff0c;總共可最多替換 k 次。在執行上述操作后&#xff0c;找到包含重復字母的最長子串的長度。示例1輸入&#xff1a; s "ABAB", k 2 輸出&#xff1a; …

python基礎(一)簡單入門

一.第一個python程序 1.交互式編程 直接在命令行里面輸入python即可進入python交互式命令行&#xff0c;linux下一樣&#xff1a; 在 python 提示符中輸入以下文本信息&#xff0c;然后按 Enter 鍵查看運行效果&#xff1a; 2.腳本式編程 把代碼都寫到文件里面&#xff0c;然后…

VS2015 python

http://pgqlife.info/2015/05/05/VS-Python/ 配置文檔轉載于:https://www.cnblogs.com/itdef/p/5262712.html