阿麗莎公主邀請她的朋友們參加她的生日聚會。她的每個朋友都會帶來價值v的禮物,而他們所有的禮物都會在不同的時間出現。由於大廳不夠大,因此alisha一次只能容納幾個人。她決定讓具有最**值的禮物的人首先進入。
每次alisha開啟門時,她都可以決定讓p個人進入她的城堡。如果大廳中的人數少於p,則所有人員都會進入。在她所有的朋友都到達之後,阿里沙(alisha)將再次開啟門,這次,每個尚未進入的朋友都會進入。
如果有兩個朋友帶來了相同價值的禮物,那麼最先出現的那個應該首先進入。給定乙個查詢n,請告訴alisha誰是進入城堡的第n個人。
輸入項輸入的第一行給出測試用例的數量t,其中1≤t≤15。
在每個測試用例中,第一行包含三個數字k,m和q,並用空格分隔。 k是她邀請的朋友數,其中1≤k≤150,000。在所有alisha的朋友到達0≤m≤k之前,門會開啟m次。 alisha將有q個查詢,其中1≤q≤100。
接下來的k行中的第i行給出了乙個字串bi,該字串由不超過200個英文本元組成,並且整數vi(1≤vi≤108)用空格分隔。 bi是參加alisha派對的第i個人的名字,bi帶來了價值vi的禮物。
接下來的m行中的每行包含兩個整數t(1≤t≤k)和p(0≤p≤k),中間用空格分隔。第t個人到達後,門將開啟,alisha將讓p個朋友進入她的城堡。
每個測試用例的最後一行將包含q個數字n1,…,nq,以空格分隔,這意味著alisha想要知道誰是進入她城堡的第n1,...,nq個朋友。
注意:最多將有兩個包含n> 10000的測試用例。
輸出量對於每個測試用例,輸出對應的alisha查詢名稱,並用空格分隔。
1output5 2 3
sorey 3
rose 3
maltran 3
lailah 5
mikleo 6
1 14 2
1 2 3
sorey lailah rose
source
2015 acm/icpc asia regional changchun online
就是排序
#pragma gcc optimize(2)#include#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
typedef
long
long
ll;
inline
intread()
while(ch>='
0'&&ch<='9')
return x*f;
}const
int maxn=2e5+110
;struct
node
else
}}a[maxn];
node now;
intmm[maxn];
struct
node1aa[maxn];
bool
cmp(node1 x,node1 y)
intp[maxn];
intz[maxn];
intmain()
for(int i=1;i<=m;i++)
sort(aa+1,aa+m+1
,cmp);
int cnt=1
;
int top=1
;
for(int i=1;i<=m;i++)
while(aa[i].rs&&!q1.empty())
}while(cnt<=n)
while(!q1.empty())
intl;
for(int i=0;i)
if(t>=1
) cout
<}
}
送禮物 題解
這道題目是到毒瘤題。首先我們至少去l個,所以我們可以把小於l的用單調佇列直接求出。對取l r個。顯而易見的是左右兩端必分別是這個區間的最小值和最大值。我們可以用01分數規劃。不放令結果最後為ans,則有 a j ans j a i ans i ans k 所以我們就可以愉快地分數規劃啦。includ...
swift送禮物動畫
最近做了乙個用swift寫的送禮動畫,這個動畫本來是在專案中用到的,然後專案改了需求用不上了就想到用swift封裝一下以後如果用得到可以借鑑下。想看下效果圖 思路 1.首先建立乙個動畫的資料model。struct animationmodel iflet giftname dict giftnam...
送禮物 雙向dfs
思路 dfs 先把a陣列排序,由大變小 dfs出前n 2 2 可以湊出的數,放到陣列s中 把s陣列去重排序,行成乙個單調遞增序列 再dfs剩下的數 可以組成的數,每組成乙個,二分找s陣列匹配的最大值 include includeusing namespace std typedef long lo...