Touch The Sky (氣球抉擇 優先佇列)
題意:
你的飛艇有n個一次性氣球,開始你在海拔0m位置,每一個氣球有一個L和D,你在小於等於L的位置才可以使用這個氣球,使你的海拔上升D。問我最多可以使用幾個氣球
解析:
設A=L+D,對於兩個氣球x和y,他們的A為Ax和Ay。顯然當Ax<Ay時,我會優先考慮Ax,因為用完Ax後還可能用Ay,但是用完Ay後一定不能再用Ax。
而且我們還可以反悔,即如果先Ax後,發現不能用了Ay(Ax>Ly),我們得到的結論為,xy中最多隻能用一個,那麼我們當然會選擇其中D小的那個,以增加後面的氣球可以被使用的可能性
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=250005;
struct node{
ll L,D,all;
}e[maxn];
bool cmp(node a,node b){
return a.all<b.all;
}
int main(){
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%lld%lld",&e[i].L,&e[i].D);
e[i].all=e[i].L+e[i].D;
}
sort(e+1,e+1+n,cmp);
ll nowhei=0;
priority_queue<int> q;
for(int i=1;i<=n;i++){
nowhei+=e[i].D;
q.push(e[i].D);
if(nowhei>e[i].all){
int dec=q.top(); q.pop();
nowhei-=dec;
}
}
printf("%d\n",q.size());
return 0;
}
相關推薦
Touch The Sky (氣球抉擇 優先佇列)
題意: 你的飛艇有n個一次性氣球,開始你在海拔0m位置,每一個氣球有一個L和D,你在小於等於L的位置才可以使用這個氣球,使你的海拔上升D。問我最多可以使用幾個氣球 解析: 設A=L+D,對於兩個氣球x和y,他們的A為Ax和Ay。顯然當Ax<Ay時,我會優
二叉樹(堆和優先佇列)
堆是一種特殊的二叉樹。 最小值堆:最小值堆的特性。 對於堆的任意非葉節點K,K的值總是小於或者等於左右子節點。 K <= 左節點;K <= 又節點; 堆例項: 堆實際上是一個完全二叉樹(若設二叉樹的深度為h,除第 h 層外,其它各層 (1~h-1)
Codeforces Round #390 (Div. 2)(A,B,C(記憶化搜尋),D(貪心,優先佇列))
/* Codeforces Round #390 (Div. 2) 時間: 2017/02/16 A. Lesha and array splitting 題意:將集合分成幾個小集合,要求小集合的和不為0. 題解:遍歷過去,一直到不滿足集合並數字非0前生成一個集合 */ #
Expedition POJ 2431 (貪心與優先佇列)
題面: A group of cows grabbed a truck and ventured on an expedition deep into the jungle. Being rather poor drivers, the cows unfortunately managed to
201803-4 棋局評估(動態規劃+優先佇列)
試題編號: 201803-4 試題名稱: 棋局評估 時間限制: 1.0s 記憶體限制: 256.0MB 問題描述: 問題描述 Alice和Bob正在玩井字棋遊戲。 井字棋遊戲的規則很簡單:兩人輪流往3
UVa 11134 Fabled Rooks(貪心+優先佇列)
題目連結 題目大意: 在一個棋盤上,放置N個國際象棋的城堡,每個城堡給出可以放置的範圍,要求這些城堡不能相互攻擊到,求這些城堡的擺放方案。 解題思路: 這題非常關鍵的一點就是橫縱座標可以分開獨立考慮。對於每一個方向,我們維護一個下限小(其次上線小)的區間
CCF-CSP-2017-3-4 地鐵修建(結構體優先佇列)
題目:問題描述 A市有n個交通樞紐,其中1號和n號非常重要,為了加強運輸能力,A市決定在1號到n號樞紐間修建一條地鐵。 地鐵由很多段隧道組成,每段隧道連線兩個交通樞紐。經過勘探,有m段隧道作為候選,
Gym 101806T Touch The Sky 思維 優先佇列
題目連結:http://codeforces.com/gym/101806/problem/T 題意: 你現在在海拔為0的地方,你現在手上有n個氣球,每個氣球有一個最高可吹海拔L(即如果你當前所在超過了這個高度,你
Hdu 1026 Ignatius and the Princess I(bfs記錄路徑優先佇列)
Ignatius and the Princess I Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission
hdu 4006 The kth great number(優先佇列)
Problem Description Xiao Ming and Xiao Bao are playing a simple Numbers game. In a round Xiao Ming c
HDU4006 The kth great number————棧和佇列(優先佇列)
Xiao Ming and Xiao Bao are playing a simple Numbers game. In a round Xiao Ming can choose to write down a number, or ask Xiao Bao w
最小n個和(優先佇列)
給出兩個包含 nn 個整數的陣列 AA,BB。分別在 AA, BB 中任意出一個數並且相加,可以得到 n^2n2個和。求這些和中最小的 nn 個。 輸入格式輸入第一行一個整數 n(1 \le n \le 50
洛谷4404 [JSOI2010]快取交換(貪心)(優先佇列)
題目 在計算機中,CPU只能和快取記憶體Cache直接交換資料。當所需的記憶體單元不在Cache中時,則需要從主存裡把資料調入Cache。此時,如果Cache容量已滿,則必須先從中刪除一個。 例如,當前Cache容量為3,且已經有編號為10和20的主存單元。 此時,CPU訪問編號為10的主存
中位數 (優先佇列)
中位數 這種題型比較常見,所以總結下來為妙。 一般暴力的方法是找到排一個序,然後輸出中間點。 然後正解的方法是優先佇列。 解法 一個大根堆一個小根堆,用於儲存中位數左邊的數和中位數右邊的數。 然後每一次插入某個數的時候,可以插入到中間,然後判斷左右兩個堆的大小,保持均等即可。 #include &l
(優先佇列)P1631 序列合併
https://www.luogu.org/problemnew/show/P1631 有兩個長度都是N的序列A和B,在A和B中各取一個數相加可以得到N^2 個和,求這N^2個和中最小的N個。 Ai <= 1e9, Bi <= 1e9, N <= 1e5. 直接暴力用優
資料結構--6堆(優先佇列)
操作 插入:空穴上濾策略,新元素在堆中上濾直到找出正確位置。 刪除最小者(DeleteMin):返回並刪除佇列中最小的元素,將堆中最後一個元素放入合適位置,空穴下濾策略。 限制:不能進行Find操作。 實現方式 1.利用簡單鏈表,在表頭O(1)插入,遍歷刪除最小元;或者
hdu 4857 逃生(反向拓撲排序+優先佇列)
逃生 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 7786  
51nod 1672(優先佇列)(樹狀陣列)
1672 區間交 基準時間限制:1 秒 空間限制:131072 KB 分值: 40 難度:4級演算法題 收藏 關注 小A有一個含有n個非負整數的數列與m個區間,每個區間可以表示為li,ri。 它
CCF-CSP201609-4 交通規劃(Dijkstra+優先佇列)
題目連結 問題描述 試題編號: 201609-4 試題名稱: 交通規劃 時間限制: 1.0s 記憶體限制: 256.0MB 問題描述: 問題描述 G國國王來中國參觀後,被中國的高速鐵路深深的震撼,決定為自己
CCF 公共鑰匙盒(模擬、排序、優先佇列)
問題描述 試題編號: 201709-2 試題名稱: 公共鑰匙盒 時間限制: 1.0s 記憶體限制: 256.0MB 問題描述: 問題描述 有一個學校的老師共用N個教室,按照規定,所有的鑰匙都必須放在公共鑰匙盒