7-45 航空公司VIP客户查询 (25 分)(思路+详解+map用法解释+超时解决)兄弟们来呀冲压呀呀呀呀
一:題目
不少航空公司都會提供優惠的會員服務,當某顧客飛行里程累積達到一定數量后,可以使用里程積分直接兌換獎勵機票或獎勵升艙等服務。現給定某航空公司全體會員的飛行記錄,要求實現根據身份證號碼快速查詢會員里程積分的功能。
輸入格式:
輸入首先給出兩個正整數N(≤10
5
)和K(≤500)。其中K是最低里程,即為照顧乘坐短程航班的會員,航空公司還會將航程低于K公里的航班也按K公里累積。隨后N行,每行給出一條飛行記錄。飛行記錄的輸入格式為:18位身份證號碼(空格)飛行里程。其中身份證號碼由17位數字加最后一位校驗碼組成,校驗碼的取值范圍為0~9和x共11個符號;飛行里程單位為公里,是(0, 15 000]區間內的整數。然后給出一個正整數M(≤10
5
),隨后給出M行查詢人的身份證號碼。
輸出格式:
對每個查詢人,給出其當前的里程累積值。如果該人不是會員,則輸出No Info。每個查詢結果占一行。
輸入樣例:
4 500 330106199010080419 499 110108198403100012 15000 120104195510156021 800 330106199010080419 1 4 120104195510156021 110108198403100012 330106199010080419 33010619901008041x輸出樣例:
800 15000 1000 No Info二:思路
用到了map容器一對一映射的特性,因為map容器自帶去重功能,所以我們在處理 相同的身份證號碼時,用的是累加功能,這樣就避免了直接覆蓋,需要知道的是,如果未賦初值(即鍵值),鍵值默認為0 (map<關鍵值,鍵值>m);
還有的是這個輸入字符串,我先用的是string 但不可以,我后來改為了 字符數組
三:知識速遞(不懂map的兄弟們可以學一下啊)
map的用法
四:上碼(來干了這杯代碼,我們一醉方休)
/**思路:用map容器進行存儲 */ #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] 未賦初始值時候 其默認為 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函數來定位數據出現位置,它返回的一個迭代器,當數據出現時,//它返回數據所在位置的迭代器,如果map中沒有要查找的數據,它返回的迭代器等于end函數返回的迭代器,// cout << m[str] << endl;printf("%d\n",m[a]);}else{printf("No Info\n");}} }五:超時解決
這個題挺簡單的,但是但是,這個題考的不是思路,考的是如何解決超時 廢話少說 說重點
解決超時方法
1.可以多提交幾次,然后卡時間,可以在pta通過
2.將輸入輸出改為scanf 和 printf
3.回爐重造(就是 碼得重寫了)
就這樣了 ,下班了我啊哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈 哈哈哈哈哈哈哈哈哈哈哈哈哈哈 加油 BOY!
總結
以上是生活随笔為你收集整理的7-45 航空公司VIP客户查询 (25 分)(思路+详解+map用法解释+超时解决)兄弟们来呀冲压呀呀呀呀的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 蚂蚁集团与内蒙古签署 5 年战略合作,探
- 下一篇: 怎么制作网站外链(怎么制作网站外链链接)