2023广师大训练赛2

头号单词

https://ac.nowcoder.com/acm/contest/52032/A

比赛地址:2023广师大训练赛2

A 头号单词

签到题。遍历字符串,判断即可。
C语言代码
C++代码
Java代码
Python代码

B 最大乘积

模拟题。由于位或运算的性质,两个数字“越或越大”,设z=x|y,则z>=x&&z>=y成立。
所以,把所有的数组元素都位或一遍,就可以得到单个元素的最大值,进而得到最大乘积。
请注意,一个最大值都有可能超过1000000007,需要提前取模,不然会爆long long 。
另外,还要用到取余法则。

(x*y)%mod=((x%mod)*(y%mod))%mod 

C语言代码
C++代码
Java代码
Python代码

C 分配方案

快速幂、组合数学。高中数学的结论,C(0,n)+C(1,n)+…+C(n,n)=2^n 。
结合题意,每个验题人至少要验一道题,所以转化为求n道题目的非空子集,即2^n – 1 。
用循环来实现幂运算,显然会超时,那么就需要使用 快速幂算法
C语言代码
C++代码
Java代码
Python代码

D 生日礼物

动态规划。比较经典的完全背包问题,对于i>2的情况下,区间 [1,i-1] 的所有答案,均为最优答案,那么只需枚举几百袋巧克力即可求出dp[i]的最优值。
为了避免超时,需要进行dp数组的预处理。
为了避免超内存,需要把空间复杂度压缩到1e5。
C语言代码
C++代码
Java代码
Python代码

E 纸牌游戏

博弈论。首先把所有纸牌按照下标的奇偶性进行分组,杰哥可以选择拿奇数堆或者拿偶数堆。
如果杰哥拿的是奇数堆,那么迪锴只能拿偶数堆,因为两头的下标都是偶数。
如果迪锴拿了左边的纸牌,杰哥也必然拿左边的纸牌,这样可以使得,两次操作后,迪锴依然只能拿偶数堆的纸牌。
既然纸牌点数之和为奇数,那么奇数组和偶数组必然有一堆最大,没有平局,所以杰哥一眼丁真,可以先手选择最大的那堆纸牌,必赢。
C语言代码
C++代码
Java代码
Python代码

F 数位除法

贪心。使用优先队列存储所有的数据,然后开始操作。
每次选择数组当前的最大值进行操作,使得数组的最大值逐渐减小。
如果最大值是2的幂次方,这意味着它在二进制表示下只有一个 1 ,那么无论再操作多少次,都不能更改数组的最大值,此时应该退出循环。
极限数据为100000 个 805306368 (3<<28),每个元素都需要操作29次,才能变为 1 ,所以数组长度至少需要开到 29e5 ,不然会越界。
考虑到 q 组询问,依然是需要预处理的,不然会超时。
C语言代码
C++代码
Java代码
Python代码

——————————————————

感谢同学们的积极参与!

全部评论

相关推荐

面试官全程关摄像头1.自我介绍一下2.React和Vue哪个更熟悉一点3.你在之前那段实习经历中有没有什么技术性的突破(我只是实习了44天工作28天,我把我能说的都说了)4.你封装的哪个表单组件支不支持动态传值5.自己在实习阶段Vue3项目封装过hook吗6.hook有什么作用7.Vue2和Vue3的响应式区别(我说一个是proxy是拦截所有的底层操作,Object.defineProperty本身就是一个底层操作,有些东西拦截不了,比如数组的一些操作还有等等,面试官就说实在要拦截能不能拦截????我心想肯定不行呀,他的底层机制就不允许吧)8.pinia和vuex的区别(这个回答不出来是我太久没用了)9.pinia和zustand的区别,怎么选(直接给我干懵了)(我说react能用pinia吗&nbsp;&nbsp;他说要用的话也可以)10.渲染一万条数据,怎么解决页面卡顿问题(我说分页、监听滚轮动态加载,纯数据展示好像还可以用canvas画)(估计是没说虚拟表单,感觉不满意)11.type和interface的区别12.ts的泛型有哪些作用(我就说了一个结构相同但是类型不同的时候可以用,比如请求响应的接口,每次的data不同,这里能用一个泛型,他问我还有什么)13.你项目用的是React,如果让你再写一遍你会选择什么14.pnpm、npm、yarn的区别15.dependencies和devdependencies的区别总而言之太久没面试了,上一段实习的面试js问了很多。结果这次js一点没问,网络方面也没考,表现得很一般,但是知道自己的问题了&nbsp;&nbsp;好好准备,等待明天的影石360和周四的腾讯了&nbsp;&nbsp;加油!!!
解zj:大三的第一段面试居然是这样的结局
查看15道真题和解析
点赞 评论 收藏
分享
评论
4
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务