摘要: 寫個(gè)kd-tree模板...無它UPD: 以前寫的代碼太難看啦,趁去南京賽區(qū)之前整理模板重寫了一下...
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> 1 //hdu4347 KD Tree&n... 閱讀全文
摘要: 題目來源:古老的智力題請(qǐng)回答下面10個(gè)問題,你的回答應(yīng)保證每題惟有你的選擇是正確的。(1)第一個(gè)答案是b的問題是哪一個(gè)?(a) 2 (b) 3 (c) 4 (d) 5 (e) 6(2)恰好有兩個(gè)連... 閱讀全文
摘要: 感謝會(huì)長(zhǎng)君的指導(dǎo)...現(xiàn)在格式應(yīng)該正常了... 題目大意:給出一種叫做“大王鮑”的桌游,給出游戲規(guī)則和雙方起始的位置,問先走一方能否獲勝...如果不能,問在先走一方走后,后手一方有無必勝策略。 如卓峰君所言...是一道神模擬題...把規(guī)則全都寫對(duì)了就好... 判斷白贏的方法:檢測(cè)棋盤邊上有沒有黑色棋子;如果有,往六個(gè)方向搜尋,記錄連成一線的黑色棋子數(shù)目;如果黑色棋子數(shù)... 閱讀全文
因?yàn)轭}目數(shù)據(jù)較小,所以可以直接模擬。
每讀入一個(gè)命令所要進(jìn)行的操作:
如果是buy,則該種價(jià)格的買入數(shù)+ni,將該種價(jià)格加入到買入價(jià)格的集合中。
如果是sell,則該種價(jià)格的賣出數(shù)+mi,將該種價(jià)格加入到賣出價(jià)格的集合中。
然后進(jìn)行銷售的操作:
比較最低的賣出價(jià)格和最高的買入價(jià)格,
如果前者小于等于后者則:
設(shè)最低賣出價(jià)格的賣出數(shù)為a,最高買入價(jià)格的買入數(shù)為b.
則a=a-min(a,b),b=b-min(a,b)
如果其中賣出數(shù)變?yōu)?,則在賣出價(jià)格集合中刪去該種賣出價(jià)格。買入數(shù)同理。
記錄股票價(jià)格
------------------------------------------------------------------------------------------------------
直到最低的賣出價(jià)格比最高的買入價(jià)格要高或者其中一個(gè)集合為空時(shí)跳出。
將余下來最低的賣出數(shù)不為0的賣出價(jià)格輸出,如果賣出價(jià)格集合為空就輸出”-”
買入價(jià)格同理,最后再輸出股票價(jià)格
這樣就完成了一次命令的操作
注意賣出價(jià)格集合為空和買入價(jià)格集合為空時(shí)的情況
代碼如下:
1 //by NKU lkjslkjdlk
2 #include<cstdio>
3 #include<cstring>
4 #include<set>
5 using namespace std;
6 inline int min(int x,int y){return x<y?x:y;}
7 int cas,or_num,sto_pri,i,bid[1005],ask[1005],trade_num,trade_pri,min_de;
8 char order[100],tmp[10],bs[5],ch;
9 set<int> bids,asks;set<int>::reverse_iterator biter;set<int>::iterator aiter;
10 void print(){
11 if(asks.empty())printf("- ");else printf("%d ",*asks.begin());
12 if(bids.empty()) printf("- ");else printf("%d ",*bids.rbegin());
13 if(sto_pri==-1) printf("-\n");else printf("%d\n",sto_pri);
14 }
15 void sell(){
16 while(1){
17 biter=bids.rbegin();aiter=asks.begin();
18 if(*biter>=*aiter){
19 min_de=min(bid[*biter],ask[*aiter]);
20 bid[*biter]-=min_de;ask[*aiter]-=min_de;
21 sto_pri=*aiter;
22 if(bid[*biter]==0) bids.erase(*biter);
23 if(ask[*aiter]==0) asks.erase(*aiter);
24 }
25 if(asks.empty()||bids.empty()) break;
26 if(*asks.begin()>*bids.rbegin()) break;
27 }
28 }
29 int main()
30 {
31 scanf("%d",&cas);
32 while(cas--){
33 bids.clear();asks.clear();
34 memset(bid,0,sizeof(bid));memset(ask,0,sizeof(ask));
35 scanf("%d%c",&or_num,&ch);
36 for(i=0,sto_pri=-1;i<or_num;i++){
37 gets(order);sscanf(order,"%s %d %s %s %d",bs,&trade_num,tmp,tmp,&trade_pri);
38 if(!strcmp(bs,"buy")){
39 bids.insert(trade_pri);bid[trade_pri]+=trade_num;
40 if(!asks.empty()){sell();print();}else print();
41 }
42 else{
43 asks.insert(trade_pri);ask[trade_pri]+=trade_num;
44 if(!bids.empty()){sell();print();}else print();
45 }
46 }
47 }
48 return 0;
49 }
2 #include<cstdio>
3 #include<cstring>
4 #include<set>
5 using namespace std;
6 inline int min(int x,int y){return x<y?x:y;}
7 int cas,or_num,sto_pri,i,bid[1005],ask[1005],trade_num,trade_pri,min_de;
8 char order[100],tmp[10],bs[5],ch;
9 set<int> bids,asks;set<int>::reverse_iterator biter;set<int>::iterator aiter;
10 void print(){
11 if(asks.empty())printf("- ");else printf("%d ",*asks.begin());
12 if(bids.empty()) printf("- ");else printf("%d ",*bids.rbegin());
13 if(sto_pri==-1) printf("-\n");else printf("%d\n",sto_pri);
14 }
15 void sell(){
16 while(1){
17 biter=bids.rbegin();aiter=asks.begin();
18 if(*biter>=*aiter){
19 min_de=min(bid[*biter],ask[*aiter]);
20 bid[*biter]-=min_de;ask[*aiter]-=min_de;
21 sto_pri=*aiter;
22 if(bid[*biter]==0) bids.erase(*biter);
23 if(ask[*aiter]==0) asks.erase(*aiter);
24 }
25 if(asks.empty()||bids.empty()) break;
26 if(*asks.begin()>*bids.rbegin()) break;
27 }
28 }
29 int main()
30 {
31 scanf("%d",&cas);
32 while(cas--){
33 bids.clear();asks.clear();
34 memset(bid,0,sizeof(bid));memset(ask,0,sizeof(ask));
35 scanf("%d%c",&or_num,&ch);
36 for(i=0,sto_pri=-1;i<or_num;i++){
37 gets(order);sscanf(order,"%s %d %s %s %d",bs,&trade_num,tmp,tmp,&trade_pri);
38 if(!strcmp(bs,"buy")){
39 bids.insert(trade_pri);bid[trade_pri]+=trade_num;
40 if(!asks.empty()){sell();print();}else print();
41 }
42 else{
43 asks.insert(trade_pri);ask[trade_pri]+=trade_num;
44 if(!bids.empty()){sell();print();}else print();
45 }
46 }
47 }
48 return 0;
49 }
摘要: 感謝會(huì)長(zhǎng)君的指導(dǎo)...現(xiàn)在格式應(yīng)該正常了... 題目大意:給出一種叫做“大王鮑”的桌游,給出游戲規(guī)則和雙方起始的位置,問先走一方能否獲勝...如果不能,問在先走一方走后,后手一方有無必勝策略。 如卓峰君所言...是一道神模擬題...把規(guī)則全都寫對(duì)了就好... 判斷白贏的方法:檢測(cè)棋盤邊上有沒有黑色棋子;如果有,往六個(gè)方向搜尋,記錄連成一線的黑色棋子數(shù)目;如果黑色棋子數(shù)... 閱讀全文