牛客網プログラミング小結(四)——map
3572 ワード
取引明細書(京東2016実習生本題)
金融証券業界の超良い報酬待遇は、多くの求職者を引きつけて応募し、東さんも例外ではなく、証券会社に応募するつもりだ.面接官は彼女のデータ分析、処理、符号化能力を考察するために、以下の問題を準備した.
株式取引において、委託とは、株式トレーダーが証券会社で株式を売買することを指す.各手の依頼には、依頼番号i、価格pi、購入または販売フラグdi、および取引数qiが含まれる.
取引処理では,同類業務(購入または売却)における同一価格のすべての委託を統合し,リストを形成する必要がある.リストの第1部は、価格降順に並べられた合併後の売却依頼であり、次いで同じ順序に並べられた購入合併依頼が続く.証券会社が関心を持っているのは、比較的人気のあるs条合併委託情報であり、最も人気のあるs条合併委託を購入し、売る必要がある.買い付け依頼については,売れ残りはオファーの高い依頼であり,売れ残り依頼ではオファーの低い方が売れ残りである.購入または販売の合併依頼数がs条より小さい場合は、すべてリストに入れます.
今、東さんがもらったのはn個の依頼です.一番人気のあるs個の合併依頼を見つけてください.
入力入力にはいくつかのグループがあり、各グループの第1の動作の2つの正の整数nとs(1<=n<=1000、1<=s<=50)は、それぞれ委託数と最も人気のある清単数を表し、次のnの動作の具体的な委託情報は、各行に3つの部分が含まれ、第1の部分は1つのアルファベット「B」または「S」であり、購入または売却を表し、後の2つの部分は2つの整数pとqであり、オファーと数量を表す.販売依頼のオファーは、購入依頼のオファーよりも高いです.
サンプル入力6 2 B 103 S 50 2 S 40 1 S 50 6 B 20 4 B 25 10
出力出力は2 s行を超えず、依頼リストをマージし、フォーマットは入力と同じです.
サンプル出力S 50 8 S 40 1 B 25 10 B 20 4
時間制限C/C++言語:1000 MSその他言語:3000 MS
メモリ制限C/C++言語:65536 KBその他言語:589824 KB
最大マッピング
n個の文字列があり、各文字列はA-Jの大文字で構成されている.各文字を0~9の数字にマッピングし、異なる文字を異なる数字にマッピングします.これにより、各文字列は整数と見なすことができ、唯一の要求は、これらの整数が正の整数であり、それらの文字列が先頭ゼロを持つことができないことである.文字列が表す整数の和を最大にするには、どのように文字をマッピングしますか?
説明を入力:
各試験例は、1組のデータのみを含み、各データの第1の動作は正の整数nであり、次いでn行があり、各行の長さは12を超えず、大文字A−Jのみを含む文字列である.nは50以下であり、少なくとも1つの文字が任意の文字列ではない頭文字が存在する.
出力の説明:
最大和がいくらであるかを示す数を出力します.
入力例:
2ABCBCA
出力例:
1875
金融証券業界の超良い報酬待遇は、多くの求職者を引きつけて応募し、東さんも例外ではなく、証券会社に応募するつもりだ.面接官は彼女のデータ分析、処理、符号化能力を考察するために、以下の問題を準備した.
株式取引において、委託とは、株式トレーダーが証券会社で株式を売買することを指す.各手の依頼には、依頼番号i、価格pi、購入または販売フラグdi、および取引数qiが含まれる.
取引処理では,同類業務(購入または売却)における同一価格のすべての委託を統合し,リストを形成する必要がある.リストの第1部は、価格降順に並べられた合併後の売却依頼であり、次いで同じ順序に並べられた購入合併依頼が続く.証券会社が関心を持っているのは、比較的人気のあるs条合併委託情報であり、最も人気のあるs条合併委託を購入し、売る必要がある.買い付け依頼については,売れ残りはオファーの高い依頼であり,売れ残り依頼ではオファーの低い方が売れ残りである.購入または販売の合併依頼数がs条より小さい場合は、すべてリストに入れます.
今、東さんがもらったのはn個の依頼です.一番人気のあるs個の合併依頼を見つけてください.
入力入力にはいくつかのグループがあり、各グループの第1の動作の2つの正の整数nとs(1<=n<=1000、1<=s<=50)は、それぞれ委託数と最も人気のある清単数を表し、次のnの動作の具体的な委託情報は、各行に3つの部分が含まれ、第1の部分は1つのアルファベット「B」または「S」であり、購入または売却を表し、後の2つの部分は2つの整数pとqであり、オファーと数量を表す.販売依頼のオファーは、購入依頼のオファーよりも高いです.
サンプル入力6 2 B 103 S 50 2 S 40 1 S 50 6 B 20 4 B 25 10
出力出力は2 s行を超えず、依頼リストをマージし、フォーマットは入力と同じです.
サンプル出力S 50 8 S 40 1 B 25 10 B 20 4
時間制限C/C++言語:1000 MSその他言語:3000 MS
メモリ制限C/C++言語:65536 KBその他言語:589824 KB
#include
using namespace std;
int main()
{
int n;
unsigned s;
while(cin>>n>>s)
{
map buy,sell;// ,
// , map
for(int i=0;i>temp;
cin>>p>>q;
//
if(temp=="B")
{
if(buy.find(p)==buy.end())
buy[p]=q;
else
buy[p]+=q;
}
else if(temp=="S")
{
if(sell.find(p)==sell.end())
sell[p]=q;
else
sell[p]+=q;
}
}
//
int sCount=sell.size()::iterator it=sell.begin();
for(int i=0;i0;it--,sCount--)
cout<first<second<::reverse_iterator it=buy.rbegin();bCount>0;it++,bCount--)
cout<first<second<
最大マッピング
n個の文字列があり、各文字列はA-Jの大文字で構成されている.各文字を0~9の数字にマッピングし、異なる文字を異なる数字にマッピングします.これにより、各文字列は整数と見なすことができ、唯一の要求は、これらの整数が正の整数であり、それらの文字列が先頭ゼロを持つことができないことである.文字列が表す整数の和を最大にするには、どのように文字をマッピングしますか?
説明を入力:
各試験例は、1組のデータのみを含み、各データの第1の動作は正の整数nであり、次いでn行があり、各行の長さは12を超えず、大文字A−Jのみを含む文字列である.nは50以下であり、少なくとも1つの文字が任意の文字列ではない頭文字が存在する.
出力の説明:
最大和がいくらであるかを示す数を出力します.
入力例:
2ABCBCA
出力例:
1875
#include
#include
#include
#include
#include
#include