1. 程式人生 > >ACM_水題你要信了(修改版)

ACM_水題你要信了(修改版)

desc pro 一個 href targe code goto title 修改

水題你要信了

Time Limit: 2000/1000ms (Java/Others)

Problem Description:

某發最近又認識了很多妹(han)子,可是妹(han)子一多不免有時會忘記那麽一兩個,為了記得他們的名字,發哥設計了一個記錄器。對於每個他剛認識的妹(han)子,他都把妹子的名字放進記錄器裏,如果記錄器已經有這個妹子的名字,則在這個妹子的名字後面加上一個數字(數字從1開始),輸出妹子的名字加上數字。若記錄器沒有這個妹子的記錄,則輸出OH GOD。

Input:

(EOF)輸入一個數字n表示發哥認識的妹子(1<=N<=10^5),接下來n行每行一個字符串,字符串不超過100個小寫字母。

Output:

如描述。

Sample Input:

6
first
first
second
second
third
first

Sample Output:

OH GOD
first1
OH GOD
second1
OH GOD
first2
解題思路:map容器過,並且要用c語言的輸入輸出,不然老是超時=_=||。map查找時間為O(logn),總的時間復雜度是O(nlogn)。同樣的題目(這題的字符串長度比原來擴大了1倍)鏈接:ACM_水題你信嗎
AC代碼:(225ms)
 1 #include<bits/stdc++.h>
 2 using namespace
std; 3 int main(){ 4 int t;string str;str.resize(101);//預先分配空間101 5 while(~scanf("%d",&t)){ 6 getchar();map<string,int> mp; 7 while(t--){ 8 scanf("%s",&str[0]);//string類用scanf讀取 9 if(mp.find(str)==mp.end()){printf("OH GOD\n");mp[str]++;}
10 else printf("%s%d\n",str.c_str(),mp[str]++);//string類用c語言格式輸出 11 } 12 } 13 return 0; 14 }

ACM_水題你要信了(修改版)