洛谷UVA10226広葉樹種
タイトル説明
入力形式
出力フォーマット
サンプル入力と出力
入力#1コピー
出力#1コピー
タイトル翻訳:
与えられた出力フォーマットの数文字列がある:(辞書式順序)+合計回数この文字列が表示されます内の指定された文字列の中で占める割合を与え。
注:複数のデータセット。
ソリューション:
3つのことを説明します
最初 - 空白の文字列の入力モードのみキャリッジリターンを考える無視します。
二- \ (C ++ \、\、STL \、\、地図\)コンテナ。
第三 - トライ。
最初:
文字列の入力モードのみキャリッジリターンを考える空白は無視します。
コードは以下の通りであります:
getline(cin,s);
、私たちはちょうどこのようなものを覚えておく必要があると思う(あなたが見るためにオンラインで行くことができ、特定の方法の使用しますが、程度の話があまりにも複雑であり、専門用語、様々なストリームは、単に地獄(こんにゃく)が弱すぎるかもしれ何であるかを理解していません)フォーマットができます。
Sは、本明細書を指す\(C ++ STL \)の\(文字列\)容器。あなたはこのコンテナは、非常に小さなパートナーの理解されていない持っている場合は、このTaccaこのブログの会場:
第二:
マップコンテナ。
あなたは、コンテナのマップを持っている場合はジュニアパートナーに精通していないこのブログのこんにゃくを参照してください。
第三:
トライ。
あなたは辞書木が非常に小さく、パートナーの理解されていない持っている場合は、このブログのこんにゃくを参照してください。
さて、今、私たちは考えました:
その後、我々は簡単に考えることができ、私たちは倍のタイトル文字列が表示されますの数をカウントしてみましょう\(マップを\)このマッピングの関係構築、の設立\(マップ\)から構成され、\(文字列\)に\(int型\) 1マッピングが簡単に統計情報をすることができます。
最も快適で、ある(地図\)\最初のキーワードだけでサポートをランク付けています\(文字列\)辞書一連の動作を。ただ、あまりにも快適得ることはありません!
ACショートコードに来て、私たちはそう:
注:あなたは、複数のデータセットは、慎重に自身のコードを参照されたいし、最終的にプログラムを以下は同じではありませんようにしてください、非常に病気、マルチカードラップラップカード、細部に多くの注意を必要としています。
#include<cstdio>
#include<map>
#include<iostream>
#include<string>
using namespace std;
int t,tot;
string s;
map<string,int> mp;
map<string,int>::iterator it;
int main()
{
scanf("%d\n",&t);
while(t--)
{
tot=0;
mp.clear();
while(1)
{
getline(cin,s);
if(s[0]=='\0')
break;
tot++;
mp[s]++;
}
for(it=mp.begin();it!=mp.end();it++)
{
double ans=(it->second)*100.0/tot;
printf("%s %.4lf\n",it->first.c_str(),ans);
}
if(t)
puts("");
}
return 0;
}