11.21考试总结

题目:

题一;电话号码

输入格式

输入的格式是,第一行是一个正整数,指定电话号码薄中号码的数量(最多100000)。余下的每行是一个电话号码(长度不超过 15 )。每个电话号码由数字,大写字母(除了 Q 和 Z )以及连接符组成。每个电话号码中只会刚好有 7 个数字或者字母。

输出格式

对于每个出现重复的号码产生一行输出,输出是号码的标准格式紧跟一个空格然后是它的重复次数。如果存在多个重复的号码,则按照号码的字典升序输出。如果输入数据中没有重复的号码,输出一行“ No duplicates. ”。

本题考查的知识点为模拟以及简单的分析字符串处理等:

而根据考试中反映出自己许多问题:

1,数组的设置以及空间复杂度的计算等;比如一维数组最多不能超过1千万,二位两数组的乘积不能过一千万,否则你懂的;

2关于边界的限定,该取等一定要取等,千万不能随便水,觉得无所谓,不然考试水你,举个列子     int l=strlen(s1); for(j=0;j<l;++j) 考试中我l为长度为7,但循环中加了个判断if(j==3) cout<<'-'<<s1[j];然后我就脑残的以为l必须为8,否则循环不完,忽略了s【】只有7位,而后就卡出bug

 

3if(c[j]=='A'||c[j]=='B'||c[j]=='C') { c[j]='2';}

if(c[j]=='D'||c[j]=='E'||c[j]=='F') { c[j]='3';}

题中出现这些玩意都可以用const int 定一个数组来表示,很方便;

 题目二

给出一串数以及一个数字 C,要求计算出所有 A-B=C 的数对的个数。规定:不同位置的数字一样的数对算不同的数对。

输入格式

第一行包括 2 个非负整数 N 和 C(C≠0),中间用空格隔开。
第二行有 N 个整数,中间用空格隔开,作为要求处理的那串数。

输出格式

输出一行,表示该串数中包含的所有满足 A-B=C 的数对的个数。

本题很简单,直接暴力加判断很容易过了,数据不是很刁钻(0 < N <= 200000)

但是本身我们还是要尽量考虑更优的解法,毕竟如果真要卡你也是挺简单的;

那么我们就要以算法的思维来考虑;

简单分解题目:就是在a【】中找出有多少个a【】+m;

1如此看来就很明了了,hash肯定是可以的,我们说hash的思想就是先将一组数存下来然后找的话直接从中查找,时间复杂度o(1),快吧。

总之算法思维很重要,那怎样培养思维,刷题呗,没其他办法,都懂得;

 题目三:

现在有两位教授,教授甲和教授乙。新入学的N位同学们早已耳闻他们的传奇故事。所以,已经衷心地崇拜其中一位了。现在,老师要给他们分配教室。但是,要么保证整个教室都是同一位教授的粉丝,或者两个教授的粉丝人数差不超过 M 。另外,现在 N 位同学排成一排,老师只会把连续一段的同学分进一个教室。老师想知道,至少需要多少个教室。

 

这道题主要考察了区间dp简单运用,当时我是想的简单了,没时间了就打算骗点分,但下来仔细思考过后发现了一些问题:

1.       首先解读题:将[1,i]区间分成[1,j]区间与合法[j+1,i]集合组成,则要使[1,i]区间满足条件的集合数最小,显然[1,j]区间满足条件的集合数为最小;

很明显的动归;for(i=1;i<=n;i++)
         for(j=1;j<=i;j++)
         if(abs(s1[j][i]-s2[j][i])<=m) || (s1[j][i]==0) || (s2[j][i]==0) {满足条件}

          f[i]=min(f[i]f[j-1]+1);  {进行转移}

简单转移过程如上;

对于动归我觉得新手的问题在于没有那种思想,我该怎么转,完全不晓得如何下手,我的建议和总结来看,较好的方法是将中间的某一过程模拟一遍,然后按照那个过程来写:

比如:f[i][j]表示i起点,j表示终点,f[i][j]表示i--j中最多有多少人

很容易想到在中间找个点k,i--k中人最多,k+1--j中人最多,那无疑i—j中人肯定最多了,由此f[i][j]=f[i][k]+f[k+1][j];


总之呢,好好学罢,毕竟是新手,大神若有指点,欣然接受;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值