BNUOJ 26475 Cookie Selection

LINK:BNUOJ 26475 Cookie Selectionphp

題意:html

你在不停的輸入數字a1,a2,a3,......,ak,當你輸入#時,就把已輸入數字中的第k/2+1刪除,而後剩下的數字又組成一個新的數列a1,a2,......,a(k-1)。把刪除的數輸出來~╮(╯▽╰)╭spa

剛開始理解錯了題意......各類WA......想半天還不知道錯哪.....最後搞清,本身壓根連題目都弄錯了......就沒有再繼續戰鬥的想法了~~~~(>_<)~~~~code

該題要用到優先隊列......具體方法參見代碼ORZ......htm

代碼【一】:blog

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<algorithm>
 4 #include<queue>
 5 using namespace std;
 6 priority_queue<int> p;
 7 priority_queue<int,vector<int>,greater<int> > q;
 8 char str[50];
 9 void doit(){
10     while(p.size()>q.size()){
11         q.push(p.top());
12         p.pop();
13     }
14     while(q.size()>p.size()+1){
15         p.push(q.top());
16         q.pop();
17     }
18 }
19 int main(){
20     int i,j,k;
21     while(~scanf("%s",str)){
22         if(str[0]=='#'){
23             printf("%d\n",q.top());
24             q.pop();
25             doit();
26         }
27         else{
28             sscanf(str,"%d",&k);
29             if(!q.empty()&&k>q.top()) q.push(k);
30             else p.push(k);
31             doit();
32         }
33     }
34     return 0;
35 }

//memory:3132KB    time:712ms隊列

代碼【二】://這代碼.......不是很懂啊~字符串

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <cstdlib>
 4 #include <algorithm>
 5 #include <set>
 6 using namespace std;
 7 typedef set<double> si;
 8 int main(void)
 9 {
10     si X;
11     si::iterator it = X.begin();
12     char str[100];
13     while (scanf("%s", str) == 1)
14         {
15         if (str[0]== '#')
16         {
17             printf("%.0lf\n", *it);
18             X.erase(it++);
19             if (X.size() % 2)
20                 --it;
21         }
22         else
23             {
24             double x = atoi(str)+0.4*drand48();   //atoi(str)能把字符串str轉化爲數字,drand48()產生一個隨機的double數
25             X.insert(x);
26             if (X.size() == 1)
27             it = X.begin();
28             else
29             {
30                 if (x < *it)
31                     --it;
32                 if (X.size() % 2 == 0) ++it;
33             }
34         }
35     }
36     return 0;
37 }

//memory:10792KB       time:1288msget

相關文章
相關標籤/搜索