2013资格赛——电话记录
2013-08-24 16:04
204 查看
Description
小R由于长得帅气,有很多女生经常打电话给他。所以他经常接到一些在他电话记录没有的电话。今天他出门忘带了电话,晚上回来的时候发现有n个未接来电,有些电话不只打进来一次。小R当然也有自己喜欢的女生,而且不止一个,所以他想知道他喜欢的那m个女生今天有没有给他打电话。
Input
输入有多组,每组的第一行有两个整数n,m(1<=n<=10000,0<=m<=10000)接下来的n行,每行是一个电话号码,长度不超过12位(只由数字组成)。最后m行为他喜欢的女孩的电话号码。
Output
对于每组输入,按输入顺序输出那m个女孩今天给玲岭打电话的次数。
Sample Input
9 3
15124576195
110
120
10086
045188788658
119
15765423780
120
10086
10086
120
15788953201
Sample Output
2
2
0
分析:一开始想到的是开一个long long的数组arr1,然后所有数据输入之后,然后排序,排序之后从头到尾遍历数组,获得每一个电话号码出现的次数,存入另一个数组中arr2
[2]。然后开始m次输入,此时由于arr2中的数组已经排序完成,所以用二分查找即可。
但是这样却wa了,后来明白原来对于输入 0和00是不同的输入,但是按照上面的那方法,这却被看作为同一种输入。所以,最后选择了对电话号的字符串进行二分查找。这样就AC了。
小R由于长得帅气,有很多女生经常打电话给他。所以他经常接到一些在他电话记录没有的电话。今天他出门忘带了电话,晚上回来的时候发现有n个未接来电,有些电话不只打进来一次。小R当然也有自己喜欢的女生,而且不止一个,所以他想知道他喜欢的那m个女生今天有没有给他打电话。
Input
输入有多组,每组的第一行有两个整数n,m(1<=n<=10000,0<=m<=10000)接下来的n行,每行是一个电话号码,长度不超过12位(只由数字组成)。最后m行为他喜欢的女孩的电话号码。
Output
对于每组输入,按输入顺序输出那m个女孩今天给玲岭打电话的次数。
Sample Input
9 3
15124576195
110
120
10086
045188788658
119
15765423780
120
10086
10086
120
15788953201
Sample Output
2
2
0
分析:一开始想到的是开一个long long的数组arr1,然后所有数据输入之后,然后排序,排序之后从头到尾遍历数组,获得每一个电话号码出现的次数,存入另一个数组中arr2
[2]。然后开始m次输入,此时由于arr2中的数组已经排序完成,所以用二分查找即可。
但是这样却wa了,后来明白原来对于输入 0和00是不同的输入,但是按照上面的那方法,这却被看作为同一种输入。所以,最后选择了对电话号的字符串进行二分查找。这样就AC了。
#include<stdio.h> #include<stdlib.h> #include <string.h> typedef struct{ char num[15]; int ans; }node; char input[10010][15]; node arr[10010]; int cmp(const void *a,const void *b) { return strcmp((char*)a,(char*)b) ; } int binsearch(int l,int r,char ta[15]) { int m,rst; while(l<=r) { m=(l+r)/2; rst=strcmp(ta,arr[m].num); if(rst==0)return arr[m].ans; else if(rst<0)r=m-1; else l=m+1; } return 0; } int main() { int n,m,i,j,k; char tar[15]; while(~scanf("%d%d",&n,&m)) { for(i=0;i<n;i++) { scanf("%s",input[i]); } qsort(input,n,sizeof(input[0]),cmp); for(k=-1,i=0;i<n;i++) { if(k==-1|| (strcmp(input[i],arr[k].num)!=0)) { k+=1; strcpy(arr[k].num, input[i]) ; arr[k].ans=1; } else arr[k].ans+=1; } for(i=0;i<m;i++) { scanf("%s",tar); printf("%d\n",binsearch(0,k,tar)); } } return 0; }
相关文章推荐
- Android中电话监听并删除来电记录
- 电话激活Office 2013的方法--使用Skype拨打英国电话
- 2013编程之美全国挑战赛资格赛之传话游戏
- Dynamic CRM 2013学习笔记(十四)复制/克隆记录
- hdu6083 2017"百度之星"资格赛1004 度度熊的午饭时光(背包dp+记录路径)
- 如何做好数字和人名的电话记录
- 记录2013春节一些东西
- 一份真实的电话记录:一个让我们警察汗颜的美国女警(转载)
- 手机黑名单,拦截电话和短信,清除通话记录
- Dynamic CRM 2013学习笔记(二十五)JS调用web service 实现多条记录复制(克隆)功能
- 2013 编程之美资格赛
- ios工程师腾讯再一次电话面试题记录
- office 2013 电话激活步骤
- VS 2013 VS 2015的卸载方法& VS 2015社区版的安装失败记录
- [笔试题] 阿里巴巴2013技术类笔试题(完整版手工记录+详细解析)
- android 获取短信 通讯录 电话记录
- 怎么在Ubuntu平台上面读取电话及短信记录(History API)
- 查看电话记录---CallLog.Calls.CONTENT_URI
- SharePoint 2013 常用开发配置记录。
- 编程之美2013 资格赛 第一题 解题报告