蓝桥杯:通过数据量思考解题方法

计算量限制

不懂算法复杂度可以去搜一下。

通过题目给出的数据量推算你的算法复杂度应该是多少。

下面n表示数据量:

比如,O(n) 表示你代码要执行n次,就是数据有多少个你的代码要执行多少次;

O(log n) 表示数据量有n个,你的代码要执行log n次。

蓝桥杯一般能承受 1 0 9 10^9 109次运算。如果你的算法要运行 1 0 9 10^9 109次以上,除非题目允许较长的运行时间,否则是拿不到满分的!

顺便一提,蓝桥杯内存现在基本上都是256mb,大概可以开辟 < 67108864 <67108864 <67108864个的int32数组。不要真开这么多,开辟空间也是有运算量的。

所以写完代码最好计算一下算法的时间和空间复杂度,这可以判断算法的可行性!


通过数据量思考解题

通过数据量推导的出算法复杂度,可以帮助你推导出大概使用什么算法做题。

根据本人经验,题目给出的数据量( n n n)对应的算法大概有如下关系:

  1. n < 18 n<18 n<18,大概率要使用状态压缩技巧;
  2. n < 11 n<11 n<11那大概率是全排列问题,要使用回溯+深度优先等
  3. n < = 1 0 4 n<=10^4 n<=104大概率可以使用暴力枚举、动态规划
  4. n < = 1 0 6 n<=10^6 n<=106,大概率要使用排序、二分线性复杂度的算法,即为 O ( n ∗ l o g n ) O(n*logn) O(nlogn)复杂度的算法。暴力已经拿不到满分了;
  5. n < = 1 0 9 n<=10^9 n<=109就思考线性算法,如双指针、前缀和与差分、二分,最好别;
  6. n n n继续增大就要思考 O ( l o g n ) O(log n) O(logn)复杂度的算法,比如二分、数学公式

看到上面的对应关系你可能疑惑为什么1,2要使用复杂度如此之高的算法?因为蓝桥杯要考倒你,大概率不会出那么简单的题。

整理后表格

数据量大概率要使用的算法
n < 18 n<18 n<18状态压缩
n < 11 n<11 n<11全排列问题:回溯
n < = 1 0 4 n<=10^4 n<=104暴力枚举、动态规划
n < = 1 0 6 n<=10^6 n<=106排序、二分、线性复杂度
n < 1 0 9 n<10^9 n<109双指针、前缀和与差分、二分
/二分、数学公式

祝各位取得好成绩。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值