2023csp-s组错题解析

文章讨论了二进制数值处理、埃式筛法的时间复杂度分析、字典序在序列判断中的应用,以及拓扑排序和区间问题的解法,涉及`pre`和`next`函数的理解。

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

这道题考查的是对二进制的知识考查,short的位数有12位二进制,int却有18位,当输入超过所规定的位数时,会自动舍去

埃式筛法的时间复杂度就是A

时间复杂度应为O(nlogn+nlogA)=O(nlog(n*A))

验证后可以发现当m<=13时,函数返回值为false,其余均为true,最终输出为最小的满足返回值为true的m,所以答案为14。

此处条件满足时,直接返回u,表示字典序为k的序列当前节点是u。观察选项可知需要判断f[u]和k的大小关系,如果k小于等于f[u],表示以u开头的序列数量超过了k,那么就说明以u+1开头的序列字典序一定大于k,而字典序为k的序列是以u开头的。故此题选B。

此处是拓扑排序中入队的判断条件。deg是入度数组,拓扑排序时,当一个点入度为0时需要入队,由于判断是在36行的自减操作之前,因此条件应为dev[v]==1。故此题选A。

在第45行已经输出了序列的第一个点u,接下来需要不断调用next求下一个点。当求到序列的最后一个节点时,它后面没有其它节点,只有它本身,对应的字典序为1,而只有当k大于1时,执行第47行的--k之后再调用next函数才有意义。故此题选D。

函数next的作用是在以cand中的点作为候选时,求字典序为k的序列的第一个点。进入while循环之前,已经输出了整个序列的第一个点u,接下来应该在被u指向的点里面继续找下一个点,在此之前需要把只包含u一个点的序列去掉,因此需要执行--k。故此题选C。

阅读代码可知,pre[i]表示第二段前i个数的最大值,因此应和pre[i-1]取最大值。故此题选D。

由于mid到j-1范围的最大值都小于max,从i开头分别到它们结尾的序列的最大值都是max,即(j-mid)*max。故此题选A。

阅读代码可知,solve函数对应的区间为左闭右开,下标0到n-1的对应的左闭右开区间是0到n。故此题选A。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值