7-45 航空公司VIP客户查询 (25 分)(思路+详解+map用法解释+超时解决)兄弟们来呀冲压呀呀呀呀
一:題目
不少航空公司都會(huì)提供優(yōu)惠的會(huì)員服務(wù),當(dāng)某顧客飛行里程累積達(dá)到一定數(shù)量后,可以使用里程積分直接兌換獎(jiǎng)勵(lì)機(jī)票或獎(jiǎng)勵(lì)升艙等服務(wù)。現(xiàn)給定某航空公司全體會(huì)員的飛行記錄,要求實(shí)現(xiàn)根據(jù)身份證號(hào)碼快速查詢會(huì)員里程積分的功能。
輸入格式:
輸入首先給出兩個(gè)正整數(shù)N(≤10
5
)和K(≤500)。其中K是最低里程,即為照顧乘坐短程航班的會(huì)員,航空公司還會(huì)將航程低于K公里的航班也按K公里累積。隨后N行,每行給出一條飛行記錄。飛行記錄的輸入格式為:18位身份證號(hào)碼(空格)飛行里程。其中身份證號(hào)碼由17位數(shù)字加最后一位校驗(yàn)碼組成,校驗(yàn)碼的取值范圍為0~9和x共11個(gè)符號(hào);飛行里程單位為公里,是(0, 15 000]區(qū)間內(nèi)的整數(shù)。然后給出一個(gè)正整數(shù)M(≤10
5
),隨后給出M行查詢?nèi)说纳矸葑C號(hào)碼。
輸出格式:
對(duì)每個(gè)查詢?nèi)?#xff0c;給出其當(dāng)前的里程累積值。如果該人不是會(huì)員,則輸出No Info。每個(gè)查詢結(jié)果占一行。
輸入樣例:
4 500 330106199010080419 499 110108198403100012 15000 120104195510156021 800 330106199010080419 1 4 120104195510156021 110108198403100012 330106199010080419 33010619901008041x輸出樣例:
800 15000 1000 No Info二:思路
用到了map容器一對(duì)一映射的特性,因?yàn)閙ap容器自帶去重功能,所以我們?cè)谔幚?相同的身份證號(hào)碼時(shí),用的是累加功能,這樣就避免了直接覆蓋,需要知道的是,如果未賦初值(即鍵值),鍵值默認(rèn)為0 (map<關(guān)鍵值,鍵值>m);
還有的是這個(gè)輸入字符串,我先用的是string 但不可以,我后來改為了 字符數(shù)組
三:知識(shí)速遞(不懂map的兄弟們可以學(xué)一下啊)
map的用法
四:上碼(來干了這杯代碼,我們一醉方休)
/**思路:用map容器進(jìn)行存儲(chǔ) */ #include<bits/stdc++.h> using namespace std;int main(){int N,K;map<string,int>m;map<string,int>::iterator t;scanf("%d%d",&N,&K);for( int i = 0; i < N; i++ ){char a[20];int mileage;// cin >> str >> mileage;scanf("%s%d",a,&mileage);//字符串可以不用帶&if( mileage < K)mileage = K;m[a] += mileage; //m[str] 未賦初始值時(shí)候 其默認(rèn)為 0 ; } int M;cin >> M;for( int i = 0; i < M; i++ ){char a[20]; scanf("%s",a);if( m.find(a) != m.end()){//用find函數(shù)來定位數(shù)據(jù)出現(xiàn)位置,它返回的一個(gè)迭代器,當(dāng)數(shù)據(jù)出現(xiàn)時(shí),//它返回?cái)?shù)據(jù)所在位置的迭代器,如果map中沒有要查找的數(shù)據(jù),它返回的迭代器等于end函數(shù)返回的迭代器,// cout << m[str] << endl;printf("%d\n",m[a]);}else{printf("No Info\n");}} }五:超時(shí)解決
這個(gè)題挺簡(jiǎn)單的,但是但是,這個(gè)題考的不是思路,考的是如何解決超時(shí) 廢話少說 說重點(diǎn)
解決超時(shí)方法
1.可以多提交幾次,然后卡時(shí)間,可以在pta通過
2.將輸入輸出改為scanf 和 printf
3.回爐重造(就是 碼得重寫了)
就這樣了 ,下班了我啊哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈 哈哈哈哈哈哈哈哈哈哈哈哈哈哈 加油 BOY!
總結(jié)
以上是生活随笔為你收集整理的7-45 航空公司VIP客户查询 (25 分)(思路+详解+map用法解释+超时解决)兄弟们来呀冲压呀呀呀呀的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 蚂蚁集团与内蒙古签署 5 年战略合作,探
- 下一篇: 7-46 新浪微博热门话题 (30 分)