題解洛谷P1252(c 解法)馬拉松接力賽

2021-10-05 21:30:36 字數 908 閱讀 4122

對於這道題,如果使用暴力的全排列來做的話,那麼顯然時間複雜度會妥妥的達到10^5,如果我們想要過掉所有的資料點的話,暴力排列就顯得十分無力,所以我們要選擇別的方法。

這道題的特點在於要求最小值,因此我們可以往貪心和dp上去想,這裡介紹一種貪心演算法:

由於每個人都需要跑,因此第一步肯定要將每乙個人分配一公里,那麼接下來該怎麼辦呢?

顯然無論在什麼狀態下,我們都要找跑這一公里最快的人來跑,因此我們只要每一次找每個人跑下一公里所需的時間再進行比較,就可以找到所需時間最短的人,將其標記即可。

或許你會問:每個人只能上場一次,如果按照剛剛的思路不就使得每個人上場多次了嗎?

其實這並不是問題,由於我們要找的是最短的時間,因此無論先跑還是後跑,最優方案的總時長不變,所以不會對結果造成影響。

關於無後效性,由於每一步只受之前的狀態影響,所以顯然沒有後效性。

最後有乙個注意事項:開的標記陣列不能超過10,否則會導致二維陣列越界。

最後,附上本題**。

#include

using

namespace std;

int a[6]

[11],aa[6]

[11],c[6]

,ans;

intmain()

}for

(int i=

1;i<=

20;i++)}

c[temp]++;

}for

(int i=

1;i<=

5;i++

)printf

("%d\n%d %d %d %d %d"

,ans,c[1]

,c[2

],c[3]

,c[4

],c[5]

);return0;

}

馬拉松接力賽(貪心)題解(1252)

備註 要多思考啊,盡量學以致用啊,貪心 一定要多想想是不是具備無後效性!盡量開拓思路啊!某城市冬季舉辦環城25km馬拉松接力賽,每個代表隊有5人參加比賽,比賽要求每個的每名參賽選手只能跑一次,一次至少跑1km 最多只能跑10km,而且每個選手所跑的公里數必須為整數,即接力的地方在整公里處。劉老師作為...

洛谷P1784 數獨題解(DFS解法)

數獨是根據 9 9 盤面上的已知數字,推理出所有剩餘空格的數字,並滿足每一行 每一列 每乙個粗線宮內的數字均含 1 9 不重複。每一道合格的數獨謎題都有且僅有唯一答案,推理方法也以此為基礎,任何無解或多解的題目都是不合格的。芬蘭一位數學家號稱設計出全球最難的 數獨遊戲 並刊登在報紙上,讓大家去挑戰。...

C 洛谷題解 P1425

題號 p1425 題名 小魚的游泳時間 題目 倫敦奧運會要到了,小魚在拼命練習游泳準備參加游泳比賽,可憐的小魚並不知道魚類是不能參加人類的奧運會的。這一天,小魚給自己的游泳時間做了精確的計時 本題中的計時都按24小時制計算 它發現自己從a時b分一直游泳到當天的c時d分,請你幫小魚計算一下,它這天一共...