UPC 5502 打地鼠遊戲

2021-08-22 11:44:35 字數 1035 閱讀 2796

時間限制: 1 sec  記憶體限制: 128 mb

題目描述

輸入輸入包含3行,第一行包含乙個整數n(1<=n<=100000)表示有n個地鼠從地上冒出來,第二行n個用空格分隔的整數表示每個地鼠冒出後停留的時間(maxt<=50000),第三行n個用空格分隔的整數表示每個地鼠被敲擊後會增加的分值v(v<=1000)。每行中第i個數都表示第i個地鼠的資訊。

輸出輸出只有一行乙個整數,表示所能獲得的最大遊戲總分值。

樣例輸入

5

5 3 6 1 4

7 9 2 1 5

樣例輸出

提示30%的資料保證n<=100, t<=500,v<=50

60%的資料保證 n<=10000,t<=3000,v<=500

100%的資料保證 n<=100000,t<=5000,v<=1000

思路:先按照時間從小到大排序,相同時間按照價值從高到低排序,但是有時候會出現本時間有多個價值非常高的地鼠,所以我們就要在前面替換,每次打的地鼠都放在佇列裡面,按照價值從低到高排序,如果出現沒時間打的地鼠,先判斷佇列最小的(也就是第乙個)是否更小,更小的話,就替換出去,獲得的價值也相應變大。

#include #include #include using namespace std;

const int maxt = 50005;

typedef long long ll;

struct node

} arr[100005];

int cmp(node a, node b)

int main()

if(j > n) break;

pq.push(arr[j].v), j++;

if(j > n) break;

}while(!pq.empty())

printf("%d\n", sum);

return 0;}/*

85 3 6 1 2 2 3 7

7 2 9 4 7 5 4 6

*/

5502 打地鼠遊戲

題目 思路 先按小鼠出現的時間從小到大排序,用nt記錄消耗的時間,當小鼠停留的時間大於nt時,將價值加到總價值上去,否則,用此小鼠的價值和已經加上去的小鼠的最小價值比較,判斷是否加上它。用優先佇列,因為優先佇列預設從大到小排序,所以要將小鼠價值的負值加到佇列中。include include inc...

打地鼠遊戲

題目描述 輸入輸入包含3行,第一行包含乙個整數n 1 n 100000 表示有n個地鼠從地上冒出來,第二行n個用空格分隔的整數表示每個地鼠冒出後停留的時間 maxt 50000 第三行n個用空格分隔的整數表示每個地鼠被敲擊後會增加的分值v v 1000 每行中第i個數都表示第i個地鼠的資訊。輸出輸出...

打地鼠遊戲

時間限制 1 sec 記憶體限制 128 mb 題目描述 輸入輸入包含3行,第一行包含乙個整數n 1 n 100000 表示有n個地鼠從地上冒出來,第二行n個用空格分隔的整數表示每個地鼠冒出後停留的時間 maxt 50000 第三行n個用空格分隔的整數表示每個地鼠被敲擊後會增加的分值v v 1000...