【牛客 - 181D】小叶的巡查(树的直径,数学)
題干:
8102年,牛客系列競(jìng)賽空前繁榮。為了更好地管理競(jìng)賽,小葉決定巡查于各大城市之間,體察民情。所以,從一個(gè)城市馬不停蹄地到另一個(gè)城市成了小葉最常做的事情。小葉有一個(gè)錢袋,用于存放往來城市間的路費(fèi)。
這個(gè)國(guó)家有一套優(yōu)秀的交通方案,使得任何一個(gè)大城市都能從首都直接或者通過其他大城市間接到達(dá)。同時(shí),如果不重復(fù)經(jīng)過大城市,從首都到達(dá)每個(gè)大城市的方案都是唯一的。
如果不在某個(gè)城市停下來修整,在連續(xù)行進(jìn)過程中,小葉所花的路費(fèi)與他已走過的距離有關(guān),在走第x-1千米到第x千米這一千米中(x是整數(shù)),他花費(fèi)的路費(fèi)是x+10這么多。也就是說走1千米花費(fèi)11,走2千米要花費(fèi)23。
因?yàn)閲?guó)家力挺牛客系列競(jìng)賽,所以國(guó)家會(huì)給小葉報(bào)銷全部的路費(fèi)。
現(xiàn)在組織想知道:小葉從某一個(gè)城市出發(fā),中間不休息,到達(dá)另一個(gè)城市,所有可能花費(fèi)的路費(fèi)中最多是多少呢?
輸入描述:
輸入的第一行包含一個(gè)整數(shù)n,表示包括首都在內(nèi)的城市數(shù) 城市從1開始依次編號(hào),1號(hào)城市為首都。 接下來n-1行,描述高速路(高速路一定是n-1條) 每行三個(gè)整數(shù)Pi, Qi, Di,表示城市Pi和城市Qi之間有一條高速路,長(zhǎng)度為Di千米。輸出描述:
輸出一個(gè)整數(shù),表示小葉最多花費(fèi)的路費(fèi)是多少。?
示例1
輸入
復(fù)制
5 1 2 2 1 3 1 2 4 5 2 5 4輸出
復(fù)制
135備注:
n<23333解題報(bào)告:
? ?樹的直徑裸題。(因?yàn)榉凑菢渎?#xff0c;所以沒有環(huán),所以bfs隨便寫就好了。那個(gè)vis[cur]=1放到外面也是ac的)
? ?再一個(gè)考點(diǎn)就是等差數(shù)列求和了、、、
? ?其實(shí)這個(gè)題巧就巧在是以距離為變化單位的,而不是經(jīng)過的城市個(gè)數(shù),如果加上了城市數(shù)的權(quán)值,那就復(fù)雜了、、、
AC代碼:
#include<bits/stdc++.h> #define ll long long #define mp make_pair using namespace std; const int MAX = 23333 + 5; vector<pair<int,int> > vv[MAX]; int vis[MAX],dis[MAX]; int bfs(int x,int &w) {memset(vis,0,sizeof vis);memset(dis,0,sizeof dis);int res = 0;int rep = x;queue<int> q;q.push(x);vis[x]=1;dis[x]=0;while(!q.empty()) {int cur = q.front();q.pop();for(int i = 0; i<vv[cur].size(); i++) {pair<int,int> now = vv[cur][i];if(vis[now.first]) continue;vis[now.first]=1;dis[now.first] = dis[cur] + now.second;if(dis[now.first] > res) {rep = now.first;res = dis[now.first];}q.push(now.first);}}w = res;return rep; } int main() {int n;int a,b,w;cin>>n;for(int i = 1; i<n; i++) {scanf("%d%d%d",&a,&b,&w);vv[a].push_back(mp(b,w));vv[b].push_back(mp(a,w));}int ans = 0;int u = bfs(1,ans);int v = bfs(u,ans);ll out = (ll)ans * 10 + (1 + ans) *(ll) ans / 2;printf("%lld\n",out);return 0 ;}?
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的【牛客 - 181D】小叶的巡查(树的直径,数学)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mssvr.exe - mssvr是什么
- 下一篇: 【HDU - 5900】QSC and