計蒜客 踩螞蟻(優先佇列)

2021-08-04 20:13:13 字數 709 閱讀 2855

題目思路:

_這道題需要用到前面介紹過的貪心策略,因此在這裡直接給出演算法的過程,你只需要借助priority_queue來實現它。_

首先將螞蟻按照血量從大到小排序,並把鞋子(可以使用結構體或pair來儲存鞋子的傷害值和費用)按照傷害值從高到低排序。逐個計算每只螞蟻需要用哪雙鞋子來踩,對於當前螞蟻的血量 

antan

t,把所有傷害值不小於 antan

t 的鞋子放入優先佇列中。在這個優先佇列中,費用低的鞋子優先順序越高。在每次將鞋子放入優先佇列後,讓優先佇列的隊首元素(費用最低的鞋子)出隊並累積總費用。不斷迴圈,直到算出每只螞蟻對應的鞋子,或者發現沒有可用的鞋子時直接輸出no

**:

#include using namespace std;

struct node

};struct xiezim[100100];

bool cmp1(int a,int b)

bool cmp2(xiezi a,xiezi b)

int a[100100];

int main()

if(q.size()==0) flag=1;

else

}if(flag) printf("no\n");

else printf("%d\n",ans);

}

計蒜客 T 1213 拯救行動 bfs 優先佇列)

拯救行動 題目描述 現假設騎士可以向上 下 左 右四個方向移動,每移動乙個位置需要 1 個單位時間,殺死乙個守衛需要花費額外的 1 個單位時間。同時假設騎士足夠強壯,有能力殺死所有的守衛。給定牢房矩陣,公主 騎士和守衛在矩陣中的位置,請你計算拯救行動成功需要花費最短時間。輸入格式 1 兩個整數代表 ...

計蒜客 2019計蒜之道D

題意 現在給定你乙個字串 s ss 以及乙個整數 k kk,請求出 s ss的字典序最小的長度為 k kk的子串行。資料範圍 0 s 5000000 00 s 5000 000 樣例輸入 helloworld 5樣例輸出 ellld思路 假如我們先不考慮長度為k的限制我們應當怎麼做?我們以樣例為例子...

計蒜客 解碼

蒜頭君自己發明了一種字串的編碼方式,對於只含有大小寫字母的字串,可以用數字來表示括號裡面的串連續出現的次數 數字有可能超過一位數 比如a abcd 2等價於aabcdabcd。特別地,如果數字前面沒有括號,表示緊貼數字的前面的 乙個字母 出現的次數。比如abc2表示abcc。為了降低解碼的難度,蒜頭...