三道題兩小時。
第一題,圈住所有點的長方形,很簡單略過。
第二題:奇偶排序。
| 奇偶排序 | |
| 描述: | 輸入若干(不超過1000個)非負整數數字,請先取出為奇數的數字按從大到小排序,再取出偶數從小到大進行排序。 |
| 運行時間限制: | 10 Sec |
| 內存限制: | 128 MByte |
| 輸入: | 輸入一串亂序的數字 |
| 輸出: | 輸出排序后的數字 |
| 樣例輸入: | 12 34 5 7 92 3 8 |
| 樣例輸出: | 7 5 3 8 12 34 92 |
| 答案提示: |
|
第三題:記賬系統。
| 飯圈的記賬系統 | |
| 描述: | W公司食堂因為裝修需要停業一個月,員工們用餐不方便,熱心的秘書MM組織了一個飯圈,在公司附近一家經濟實惠的飯店解決用餐問題。飯圈采用會員制,會員的用餐費用由秘書MM負責記錄。請幫助秘書MM完成這個月飯圈的記賬系統:
1)管理會員,允許會員加入或者退出飯圈
2)記錄會員的每次就餐信息,方便會員進行查詢
3)自動統計會員就餐產生的消費總額,方便秘書MM進行結賬
一行一條命令,不存在多個命令位於一行的情況。命令語法(各表達式之間使用1個空格隔開,測試用例確保1個空格): command [para] 測試用例保證輸入命令合法,如測試用例保證參數個數正確,參數都是正整數。。 ca 1、增加會員 功能:增加飯圈會員 命令格式: AddMember MemberId 輸入:MemberId 會員ID 輸出:成功,不輸出;失敗(如會員ID已存在),輸出"AddMember false"。
2、刪除會員 功能:刪除飯圈會員,包括該會員所有消費記錄 命令格式: DelMember MemberId 輸入:MemberId 會員ID 輸出:無
3、餐費記錄 功能:餐費記錄,允許會員在同一天有多次餐費記錄 命令格式: RecordCost Date MemberNum MemberIdArray AverageCost 輸入:Date 就餐日期,取值范圍為1~31 MemberNum 就餐人數 MemberIdArray 就餐的會員ID數組,用例保證MemberIdArray中不存在重復的ID AverageCost 人均費用 輸出:成功,不輸出;失敗(如日期錯誤,會員ID不存在等),輸出"RecordCost false"。 注意:如果失敗,該次操作的所有數據都不能錄入。例如就餐日期錯誤,就餐的會員ID數組里面的某個ID是不存在的ID,該次操作都無效。
4、 查詢餐費,排序輸出 功能:查詢指定日期內各個會員的餐費總額,按照會員ID從小到大排序輸出 命令格式: SortTotalCost BeginDate EndDate 輸入: BeginDate 開始日期,包括BeginDate本身,取值范圍為1~31 EndDate 結束日期,包括EndDate本身,取值范圍為1~31 輸出: MemberNum BeginDate至EndDate之間有消費記錄的會員總數 CostArray 各會員的餐費總額(會員ID 餐費總額,一個空格隔開) 說明: 測試用例保證EndDate大於等於BeginDate
5、查詢指定會員的餐費詳單 功能:查詢指定會員的餐費詳單 命令格式: QueryDetailsOfSingleMember MemberId BeginDate EndDate 輸入: MemberId 會員ID BeginDate 開始日期,包括BeginDate本身,取值范圍為1~31 EndDate 結束日期,包括EndDate本身,取值范圍為1~31 輸出: RecordNum BeginDate至EndDate期間實際產生的餐費記錄數 CostDetailsArray 餐費詳單(日期 餐費,一個空格隔開),按照餐費記錄的日期從小到大按序輸出,如果存在一天內多次消費的,同一天的記錄按照餐費錄入順序輸出。 說明: 測試用例保證EndDate大於等於BeginDate
|
| 運行時間限制: | 無限制 |
| 內存限制: | 無限制 |
| 輸入: | 多行命令 |
| 輸出: | 命令執行的結果 |
| 樣例輸入: | AddMember 0 AddMember 0 AddMember 1 AddMember 2 RecordCost 1 2 0 1 10 RecordCost 1 2 1 2 20 RecordCost 2 2 1 2 20 SortTotalCost 1 2 QueryDetailsOfSingleMember 0 1 2 |
| 樣例輸出: | AddMember false 3 0 10 1 50 2 40 1 1 10 |
| 答案提示: |
|
第二題代碼,有一個用例沒通過:
#define LOCAL #include<iostream> #include<cstdio> #include <stdlib.h> #include <algorithm> using namespace std; int main(){ #ifdef LOCAL freopen("in.txt","r",stdin); #endif long int x,i,a=0,b=0,an[1001],bn[1001]; while(scanf("%d",&x)!=EOF){ if(x%2==1) an[a++]=x; else bn[b++]=x; } sort(an,an+a); sort(bn,bn+b); for(i=a-1;i>=0;i--) printf("%d ",an[i]); for(i=0;i<b;i++) printf("%d ",bn[i]); system("pause"); return 0; }
第三題代碼,寫完了,但有bug,編譯沒通過。
//#define LOCAL #include<iostream> #include<cstdio> #include <stdlib.h> #include <algorithm> #include <map> #include <vector> #include<cstring> #include<string> using namespace std; struct member{ int id; vector<int> rec[31]; int tol[31]; }; map<int,int> mid,res; member n_member; vector<member> x; int indx=0; int main(){ #ifdef LOCAL freopen("in.txt","r",stdin); #endif int a,n,i,j,per,tar,rec_size,date,begin,end,rec[10000]; char tmp[20]; while(scanf("%s",tmp)!=EOF){ if(tmp[0]=='A'){ scanf("%d",&a); if ( mid.find(a)==mid.end() ) printf("AddMember false"); else{ mid[a]=indx++; n_member=new member; n_member.id=a; for(i=0;i<31;i++) n_member.tol[i]=0; x.push_back(n_member); } } if(tmp[0]=='R'){ scanf("%d",&date); scanf("%d",&n); for(i=0;i<n;i++) scanf("%d",&rec[i]); scanf("%d",&per); for(i=0;i<n;i++){ x[mid[rec[i]]].rec[date].push_back(per); x[mid[rec[i]]].tol[date] += per; } } if(tmp[0]=='S'){ scanf("%d%d",&begin,&end); for(i=0;i<x.size();i++){ res[x[i].id]=0; for(j=begin;j<=end;j++) res[x[i].id] += x[i].tol[j]; } for (iterator iter = res.begin(); iter != res.end(); ++iter) { cout << *iter << endl; } } if(tmp[0]=='Q'){ scanf("%d%d%d",&tar,&begin,&end); rec_size=0; tar=x[mid[tar]]; for(i=begin;i<=end;i++){ rec_size += tar.tol[i].size(); } printf("%d\n",rec_size); for(i=begin;i<=end;i++){ for(j=0;j<tar.rec[i].size();j++) printf("%d %d\n",i,tar.rec[i][j]); } } system("pause"); return 0; }
