寒假大一2.15考试

每个题目都有超链接,点击可以跳转到题目界面!!!

咸鱼连突刺

M1.
错误做法,会Runtime Error

在这里插入图片描述
因为1e3+1范围内的最大质数是997,所以说这个方法处理不到998*998=996004以上的数字,当i继续增加,就会让i超出num,因为是全局变量,此事prime[i]=0,然后取余就会re,大于1000的下一个质数是1009,所以max1最小要取到1010.

改进后

在这里插入图片描述
M2.
先说暴力的思路吧。 素数筛把所有的素数筛选出来,然后对于每次询问,L 到 R跑一次找最小值
R到L跑一次找最大值
找不到就说明这一次不存在符合条件的素数,然后加和
还需要注意的就是结果可能爆int

在这里插入图片描述
M3.
预处理 然后每次询问直接O(1)查找
维护两个数组,分别存储大于等于i的最小素数和小于等于i的最大素数,每次询问,直接查一下表,然后判断是否合法即可。细节是L可能为0
,所以两个数组要从0开始维护。

在这里插入图片描述

机器人

定义一个结构体队列,一个存原数,一个存反数,用反数排列,再按顺序将原数输出。
在这里插入图片描述

纸牌游戏

在这里插入图片描述

库特的合并果子

不要忘记特殊情况:当只有1个人时直接就是这个人得奖。
在这里插入图片描述

库特的素数队列(1)

素数+队列按照题意模拟,反复迭代即可,当然队列部分也可用数组链表等等
证明一下迭代的时间为什么是可行的吧。
首先,对于一个数n,他满足1-n之间的素数个数不超过n对2向下取整(在n不等于3 5 7时都成立),而且n越大其实1-n间的素数密度越低,我们不妨先假设这一点对所有的n都成立,
然后每次遍历的次数就变成了n+n/2+(n/2)/2+…
这个值是<2*n的,所以我们可以证明迭代是o(n)的并且常数极小,所以直接暴力时间是不会有问题的

本题如果加上aaa函数,就会使运行超时,所以本题和上一题的M2原理相同,都是将数组开大,使其省掉aaa函数,加快速度。
在这里插入图片描述

库特的绳子

这道题目的做法思路来自一道非常经典的题目洛谷 P1631,显然朴素想法是找到 n^2 个钉
子对距离排个序一共 n2log(n2) 的时间复杂度,然后绳子也从大到小排个序,遍历这 n^2个间隔中前 m 大的数是否以此大于排完序的绳子。但是仔细思考一下我们不难发现,既然 我们最多使用 m 个间隔我们为什么要把这 n^2 个都求出来呢?我们可以先将每个钉子(最后一个除外)到最右边的钉子的距离放入一个优先队列,然后每次取出一个最大的间隔时,找到他的左钉子位置,然后把他的右钉子位置向左移动一位加入优先队列,这样时间复杂度就变成了(n+m)log(n)。

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值