分析:比賽的時候首先我就看到這道題資料是200000,跑時100ms,我把思路捋了一遍,然後講給旁邊人聽,一眼看過去,lfh說用哈夫曼樹吧,然後找了個板子直接扔上去了,
優先佇列+排序的做法就是取出隊頭的兩個數,然後把它們的和推入到這個佇列中,然後優先佇列會自動進行排序操作,所以你就能每一次取出兩個最小的數,然後推入這兩個數的和到佇列中去,時間複雜度估計不會超過o(n)(畢竟只有100ms啊,大概也就只能跑1e7的資料)
下面給出ac**:
1 #include 2using
namespace
std;
3const
int n=200020;4
intmain()515
int sum,ans=0;16
while(1)17
28 cout29return0;
30 }
Tyvj 1599 鍛鍊計畫
題目 鍛鍊計畫 tyvj 1599 題目大意 給定m個計畫和初始體力n,每項計畫中會損耗體力,每秒會增加1體力,求是否會 累死,輸出何時累死,若沒事則輸出最後的體力。一天1440分鐘 資料範圍 0 m 500 樣例 10 1 basketball 1 10 1 accepted1440 做題思路 一...
UVA 1599 理想路徑
這道題思路很清楚,先反向bfs搜尋點n到每個點的最短距離,然後再從點1正向bfs搜尋,每次搜尋距離減1的點,並將路徑上顏色最小的點入隊,如果有多個相同的則將這多個點入隊。對於佇列中的任意乙個點v,d 1 d v 一定是大於等於0的,所以可以用cost d 1 d v 來記錄到點1為d 1 d v 距...
Uva 1599 最佳路徑
題意 保證在最短路的時候,輸出字典序最小的路徑。方法 路徑上有了權值,可以利用圖論的資料結構來bfs,很方便。逆序bfs,找到每個點距離終點的最短路長 d x 然後,從起點,沿著 d u d v 1 的路徑,分層bfs,選字典序最小的。找到那個最小字典序的節點之後,從新建佇列。直到找完 d 0 in...