蓝桥校内训练赛的总结
1
1 | double n = 15.125; |
2
有多少个约数可以用质因数定理,分解出来,比如 n = pow(a,a1)pow(b,a2)…则它总共质因数有(a1+1)(a2+1)个,然而这道题没有这么复杂直接for就行了……
1 |
|
3
包含9直接判断就行了
1 |
|
4
一看题我以为是道二叉树的题,然后想着二分……结果是个水题
1 | printf("2018\n"); |
5
判断是不是数位递增的,可以先取出最后一个数,让其为最大,然后判断前一个数是不是比这个还大,如果前一个数比它大则不是数位递增,否则(else)就emmm直接将前一个数赋值为最大继续判断
1 |
|
6
递增数列,数据太小了,直接暴力就行了,我一开始以为得用st表记录下每次查询结果来,一看数据,还是直接暴力吧……(所以看数据范围很主要)猥琐
题解,直接判断该元素左边有没有比它小大,右边有没有比它大的,如果同时满足,则ok改元素可以,sum++;
1 | //F |
7
记住规则,辅,元,辅,元,这样判断就行了,直接道最后一个,想法很简单
1 |
|
8
一道很水的bfs题,我以为类似连通块结果不是,反正都是水……
思路:每个月草地会更新一次,周围上下左右都张草,每次记录下(存下来)有草的地方即可,(剪枝小技巧,每次张草后改地方下次不用再张了,因为其四周已经是草了,可以节省算法复杂度),然后这些个有草的地方四周都bfs一下就行了(也就是张个草)
1 |
|
9
当时提交太快,好像细节忘处理了……还好只是训练赛 ,骄兵必败啊
思路:每次回溯到上一次,注意它能回溯的前提是每一项小于前两项的差的绝对值,所以可以根据这个条件一直回溯下去,直到i的值大于它两绝对值,之前好像做过类似的……
不过dfs可能会炸,所以可以根据这个打个表
1 |
|
打表代码
打表是一种很有效的办法,处理数量不大的序列,之前貌似在东大camp碰到一个猥琐打表题……,忘补了,(所以切记,补题,补题)
1 |
|
打表ac代码
复杂度o(1)
1 |
|
10
这是一个典型的贪心题,每次选m个,则一定是挑前m大的那几个数,但顺序不难打乱了。
这个题hash,vector,结构体数组好像都能过,我感觉还是set好用,代码特短。
思路:用两个vector容器存两个数组,然后一个存原始的数组,一个存排好序的数组(由大到小排序),然后将排好序的前m个元素放到set中,然后从原始数组中开始查找,看这个出现在set中没,如果出现则输出。
总复杂度,排序是nlogn,然后查找是logm,所以后面复杂度为nlogm,总复杂度为nlogn+nlogm,应该不会被tle吧,不是特别暴力
1 |
|
*小结:此次校内赛,让我昨晚cf卡c题那个痛苦稍微缓解了一下,也证明了多打游戏手速会更快这个划掉,然后这次第9题稍微卡了一下,说明回溯还是得练习练习,还有好几个题比如9,10好像都可以st表过,可惜我线段树,st表不是太会,还是得练习啊,多打游戏,热爱生活,我tcl…… *