三道题两小时。
第一题,圈住所有点的长方形,很简单略过。
第二题:奇偶排序。
奇偶排序 | |
描述: |
输入若干(不超过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; }