日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HDU OJ 5437 Alisha’s Party 2015online A

發(fā)布時(shí)間:2025/7/14 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HDU OJ 5437 Alisha’s Party 2015online A 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

題目:click here

題意:

  邀請(qǐng)k個(gè)朋友,每個(gè)朋友帶有禮物價(jià)值不一,m次開門,每次開門讓一定人數(shù)p(如果門外人數(shù)少于p,全都進(jìn)去)進(jìn)來,當(dāng)最后所有人都到了還會(huì)再開一次門,讓還沒進(jìn)來的人進(jìn)來,每次都是禮物價(jià)值高的人先進(jìn)。最后給出q個(gè)數(shù),表示要輸出第ni個(gè)進(jìn)來的人的名字。

分析:

  優(yōu)先隊(duì)列問題。注意優(yōu)先隊(duì)列的比較函數(shù)即出隊(duì)順序,

1 #include <iostream> 2 #include <cstdio> 3 #include <queue> 4 #include <cstring> 5 #include <algorithm> 6 7 using namespace std; 8 const int M = 150005; 9 10 struct Node { // 保存來客信息 11 char name[205]; 12 int val; 13 int id; 14 bool operator < ( const Node x ) const { // 排序注意--在優(yōu)先隊(duì)列中的出隊(duì)順序 15 if( val == x.val ) return id > x.id; 16 return val < x.val; 17 } 18 }node[M]; 19 struct Time { // 保存開門信息--要排序--給的數(shù)據(jù)可能不按順序 20 int t, p; 21 bool operator < ( const Time x ) const { return t < x.t; } 22 }time[M]; 23 24 int k, m, q; 25 char str[M][205]; // 答案 26 27 void solve() { 28 scanf("%d%d%d", &k, &m, &q ); 29 for( int i=1; i<=k; i++ ) { 30 scanf("%s %d", node[i].name, &node[i].val ); 31 node[i].id = i; 32 } 33 for( int i=0; i<m; i++ ) 34 scanf("%d%d", &time[i].t, &time[i].p ); 35 sort( time, time+m ); // 對(duì)開門信息排序 36 priority_queue<Node> Q; 37 int order = 0; 38 int last = 0; 39 for( int i=0; i<m; i++ ) { 40 int t, p; t = time[i].t; p = time[i].p; 41 for( int i=last+1; i<=t; i++ ) { 42 Q.push( node[i] ); 43 } 44 for( int i=0; i<p; i++ ) { 45 if( Q.empty() ) break; // 注意當(dāng)門外的人數(shù)比p小時(shí)--隊(duì)列判空直接結(jié)束--否則會(huì)RE 46 Node nd = Q.top(); Q.pop(); 47 order++; 48 strcpy( str[order], nd.name ); 49 } 50 last = t; 51 } 52 for( int i=last+1; i<=k; i++ ) // m次開門后還要開門一次--門外所有人都進(jìn)門 53 Q.push( node[i] ); 54 while( !Q.empty() ) { 55 Node nd = Q.top(); Q.pop(); 56 order++; 57 strcpy( str[order], nd.name ); 58 } 59 bool fo = false; // 輸出格式 60 for( int i=1; i<=q; i++ ) { 61 int s; scanf("%d", &s ); 62 if( fo ) printf(" %s", str[s] ); 63 else { printf("%s", str[s] ); fo = true; } 64 } 65 printf("\n"); 66 } 67 68 int main() { 69 int t; scanf("%d", &t ); 70 while( t-- ) { 71 solve(); 72 } 73 return 0; 74 }

?

轉(zhuǎn)載于:https://www.cnblogs.com/TaoTaoCome/p/4806837.html

總結(jié)

以上是生活随笔為你收集整理的HDU OJ 5437 Alisha’s Party 2015online A的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。