NPSC補完計劃

登入註冊帳號.

請輸入帳號, 密碼以及預計登入時間
進階搜尋  

最新消息:

歡迎光臨NPSC補完計劃

+ NPSC補完計劃 » NPSC國中組 » NPSC2012國中組初賽
 D. B613星球的元素 (C++)

作者 主題: D. B613星球的元素 (C++)  (閱讀 1957 次)

skipper

  • 初級會員
  • **
  • 文章數: 28
    • 檢視個人資料
D. B613星球的元素 (C++)
« 於: 十二月 01, 2012, 08:36:00 pm »

代碼: [選擇]
// accessing mapped values
#include <iostream>
#include <map>
#include <string>
using namespace std;

int main ()
{
map<string,int> Elements;
int M,N;
cin >> M >> N;
//建立元素表
for(int i = 0;i < M;i++){
string element;
int weight;
cin >> element >> weight;
Elements[element] = weight;
}

for(int i = 0;i < N;i++){
string composite;
int weight=0;
cin >> composite;
string e;
e=composite[0];
int number=0;
for (int j=1;j<composite.length();j++){
if (isdigit(composite[j])){
number = number*10 + (composite[j]-'0');
}
else if (islower(composite[j])){
e=e+composite[j];
}
else{
if (number==0) number=1;
weight += Elements[e] * number;
e= composite[j];
number=0;
}
}
if (number==0) number=1;
weight += Elements[e] * number;
cout << weight << endl;
}

  //system("pause");
  return 0;
}
記錄

WYJOIER

  • 新手
  • *
  • 文章數: 7
    • 檢視個人資料
Re: D. B613星球的元素 (C++)
« 回覆 #1 於: 四月 23, 2014, 05:15:48 pm »

附上我的解法~
代碼: [選擇]
#include <string>
#include <iostream>
#include <algorithm>
using namespace std;
struct Data
{
string Name;
int W;
bool operator < ( const struct Data& Object ) const{
return Name.size() > Object.Name.size();
}
};
int main()
{
ios::sync_with_stdio(false);
string x;
Data *Thing;
int M , N , Answer , Temp , P;
cin >> M >> N;
Thing = new struct Data[M];
for( int i = 0; i < M; i++ )
cin >> Thing[i].Name >> Thing[i].W;
stable_sort( Thing , Thing + M );
while( N-- && cin >> x )
{
Answer = 0;
for( int i = 0; i < M; i++ )
{
Temp = 0 , P = -1;
P = x.find( Thing[i].Name , P+1 );
if( P != -1 )
{
x.replace( P , Thing[i].Name.size() , 1 , '~' );
for( int i = P+1; isdigit(x[i]) && i < x.size(); i++ )
Temp = Temp*10 + (x[i]-'0');
if( Temp == 0 )Temp = 1;
}
Answer += Temp*Thing[i].W;
}
Temp = 0;
for( int i = 0; isdigit(x[i]); i++ )
Temp = Temp*10 + ( x[i] - '0' );
if( Temp == 0 )Temp = 1;
cout << Answer*Temp << endl;
}
return 0;
}
記錄
+ NPSC補完計劃 » NPSC國中組 » NPSC2012國中組初賽
 D. B613星球的元素 (C++)