更新:省一到手了,看来蓝桥杯虽然题目难,但是竞争还是不大的
一共五道填空和五道编程,前四道填空和前三道编程比较有把握,剩下的很虚,希望能进国赛orzzz
填空1
题意:输出1到2020之中,数字2出现了一共多少次。
题解:C语言及格就行;
填空2
题意:求分子和分母都在1到2020范围内的分数中,有多少个是既约分数(既约分数定义为分子分母的gcd为1)。
题解:C语言及格+会手写gcd就行;
填空3
题意:定义了这样一个蛇形走位的数阵,求第(20)行(20)列的数字是多少。
题解:当做初高中那种数学填空题,手算一些等差数列就可以了。
填空4
题意:给出一个电梯那种数字8,如下图所示,在7个笔画(横或竖)之间选择一些点亮,要求点亮的笔画组成恰好一个连通块,求方案数。
题解:可以建图暴力枚举(2^7)种情况然后bfs或dfs判断,也可以直接用排列组合的方法计算。
填空5
题意:(20)个圆和(20)条直线能把平面分成几部分。
题解:不会做,瞎写了个。
大题1
题意:给出(n)个学生的成绩,分别输出最高分、最低分、成绩均值(保留两位);
题解:C语言及格就行;
大题2
题意:首先介绍了八位数字表示日期,如2020年2月2日表示为(20200202),现在给出一个八位数字表示的日期,保证合法且年份在1000至8999之间,分别求该日期之后的第一个满足以下条件的日期的八位表示并输出(分别输出两个):
1、八位表示下是回文串的日期;
2、八位表示下是ABABBABA的日期。
题解:不整花活,老老实实写模拟,其实码量还行也不是很费时间,大概80+行?
大题3
题意:对于字符串(s),定义一个(f(s))表示该串中出现恰好一次的字母的个数,现在给出一个字符串(S),串长(10^5),求其所有子串(t)的(Sigma f(t))。
样例:(ababc)输出(21)。
题解:感觉是CF上常见的题目,把问题由“一个串内出现一次的字母有多少个”转化为“某个字母在多少个串中出现一次”,然后统计一下每个字母出现的位置推一下公式就可以做了。
大题4
题意:给定平面内的一个椭圆(可能是斜的),并给出一个三角形,求三角形和椭圆的面积交,坐标绝对值在(1000)以内,结果允许(0.01)的绝对误差。
题解:据群友说正解应该是把椭圆先挪到原点再压成圆,把这样的变换矩阵也应用到三角形上,然后求三角形和圆的面积交(自适应辛普森?)就是答案,但我也不知道为啥这样可以保证面积不变。
我的瞎搞做法是,随便把三角形两条边当做一个斜坐标系的坐标轴,(3000)等分,因此可以得到(3000^2)个三角形里的点,然后求落在椭圆里的点的个数,除以(3000^2)在乘以三角形面积就当做答案。这么做在样例上精度似乎还不错,但考虑到坐标范围,感觉多半要凉呀。
大题5
题意:给定一个数字(V(Vleq 10000)),请你给出一个逆序数恰好为(V)的字符串,多个答案优先输出最短的,多个最短的优先输出字典序最小的。
题解:从样例可以猜出,答案字符串必须是非严格单调递减的,比如(fedccba)这样的,根据这个性质,只要枚举每个字符出现次数就可以唯一确定一个字符串。
这样对于(50\%)的数据((V leq 100)) 可以发现串长不超过(15),所以就可以枚举各个字符出现次数,在(C_{30}^{15})左右次运算得到答案,感觉有点慢,所以可以打个表。
(100\%)的做法不太会,但可以注意到(100\%)的串长也不超过(200),所以基于上面的性质想出一个科学可写的(O(n^3))就可以过了(但我想不出来啊摔)。