百度C++笔试
10.15,难度中等。其中数学题和规律题比较多
第一题:给你1-n个数,你能填充k个,如果i被填充且i + 1没有被填充则积分增加1
这题考虑构造最优解法,先间隔填充(n + 1) / 2个,然后反向填充。答案公式为(n + 1) / 2 - (k - (n + 1) / 2) + n % 2 == 0
第二题:给你一个字符串,执行size次变换,第i次变换将s【i】移动到字符串末尾。问size次变换之后答案是多少
暴力变换时间复杂度过高。这里考虑递归实现分治变换。n最开始为size,每次变换当前n / 2 次,直到n = 1。注意每次要记录起始位置。
第三题:给你n大小的数列,你要做n - 1次变化,每次使得a[i] + (-1 | 1) *a[i + 1]。如{1, 2, 3, 4}, 第一次变化到{1 + 2, 2 - 3, 3 + 4}。
这题玩弄玩弄样例,发现n为偶数具备明显规律。当n为偶数时,满足最后两项的和为间隔的二项式系数变形。即为a[1] + C(n / 2, 1) * a[3] + C(n / 2, 2) * a[5] .... + C(n / 2, n / 2) a[n]。而n为奇数时直接变化成偶数即可。不记得怎么写C的预处理了,直接交卷了
#百度求职进展汇总##百度##笔试##你都收到了哪些公司的感谢信?#
第一题:给你1-n个数,你能填充k个,如果i被填充且i + 1没有被填充则积分增加1
这题考虑构造最优解法,先间隔填充(n + 1) / 2个,然后反向填充。答案公式为(n + 1) / 2 - (k - (n + 1) / 2) + n % 2 == 0
第二题:给你一个字符串,执行size次变换,第i次变换将s【i】移动到字符串末尾。问size次变换之后答案是多少
暴力变换时间复杂度过高。这里考虑递归实现分治变换。n最开始为size,每次变换当前n / 2 次,直到n = 1。注意每次要记录起始位置。
第三题:给你n大小的数列,你要做n - 1次变化,每次使得a[i] + (-1 | 1) *a[i + 1]。如{1, 2, 3, 4}, 第一次变化到{1 + 2, 2 - 3, 3 + 4}。
这题玩弄玩弄样例,发现n为偶数具备明显规律。当n为偶数时,满足最后两项的和为间隔的二项式系数变形。即为a[1] + C(n / 2, 1) * a[3] + C(n / 2, 2) * a[5] .... + C(n / 2, n / 2) a[n]。而n为奇数时直接变化成偶数即可。不记得怎么写C的预处理了,直接交卷了
#百度求职进展汇总##百度##笔试##你都收到了哪些公司的感谢信?#
全部评论
佬,你第三题A了嘛?
哇靠,怪不得不会做第三题。找出公式之后还得求组合数,而且组合数普通的预处理还不够,这时间限制估计得求逆元。
同样第三题暴力拿了20%就溜了
相关推荐
10-20 15:26
门头沟学院 C++ 点赞 评论 收藏
分享
10-23 23:54
北京培黎职业学院 C++ 一笑而过2222:啊!拷贝构造函数和赋值操作符的区别
拷贝构造函数用于创建一个新对象作为现有对象的副本,而赋值操作符用于将一个已存在对象的值赋给另一个已存在的对象。
啊!析构函数能不能被重载
析构函数不能被重载,每个类只能有一个析构函数。
啊!构造函数能不能被重载
构造函数可以被重载,允许使用相同的构造函数名但参数列表不同来创建多个构造函数。
啊!虚函数和一般函数的区别
虚函数用于实现多态,允许通过基类指针或引用调用派生类的函数;而一般函数不具备这种动态绑定的能力。
啊!引用和指针的区别
引用必须在声明时初始化且不能更改指向的对象,而指针可以在任何时候指向不同的对象,并且可以为 NULL。
啊!C++内存分区
C++内存分为四个主要区域:栈区、堆区、全局/静态存储区和代码区。
啊!堆区申请的内存没有被释放
如果堆区申请的内存没有被释放,会导致内存泄漏,程序运行时间越长,占用的内存越多,最终可能导致系统资源耗尽。
啊!介绍几种常见的 STL
常见的 STL(标准模板库)组件包括:vector(动态数组)、list(双向链表)、map(键值对集合)、set(唯一元素集合)、queue(队列)、stack(栈)等。
点赞 评论 收藏
分享