2016蓝桥杯省赛B组题解

本文分享了作者参加蓝桥杯比赛的经历,包括遇到的撕邮票问题的二进制枚举解决方法,3*4方格内数字放置的DFS算法,以及代码补全题的快速排序和DFS应用。还详细介绍了大题的解法,如二重循环预处理、贪心算法和相邻数比值减少法,展示了作者对算法的理解与应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天第一次打蓝桥杯, 去水了一发, 其实蓝桥杯的题还是蛮水的。

记得不是很清楚了, 我就口胡一下吧:

有个题是撕邮票的, 本来可以用那个枚举全排列的函数next_permutation轻松搞定, 可是记忆力差的我哪能记得住, 而且坑爹的dev我找了半天也没发现代码补全, 差点连头文件都写不全。  不过还好我会二进制枚举子集, 如果出现了5个1, 就判断一下这5个格子是否相邻。   是否相邻很好判断, 我的做法比较无脑, 预处理出谁和谁相邻。

还有个题是一个缺2个格子的3*4方格里放数字, 典型dfs傻逼题, 去重一下就好了。 

代码补全题考了个快排和dfs, 我们可以把代码粘贴下来运行一下结果看看对不对, 也很简单。

其他的记不清了, 反正就是觉得每题都是dfs - -!

大题:

第一题我的做法是二重循环预处理出两个数的加和, 用结构体记录这个两个数和他们的平方和, 然后排下序, 先按照平方和排序, 再按照a排, 再是b。  然后自己写个二分, 枚举第1、2个数, 二分第3、4个数就OK啦, 复杂度O(nlogn)。

第二题我怎么看着是原题呢,其实就是原题, 紫书上第八章习题, 之前刷过, 传送门:点击打开链接 , 就是个贪心。

第三题做法是每次算出相邻两个数的比值, 这样, 每次都会减少一个数, 最后留下的就是答案 , 复杂度O(n^2)。


评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值