首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
库特
获赞
11
粉丝
10
关注
2
看过 TA
9
男
浙江大学
2021
算法工程师
IP属地:河北
库特库特库~
私信
关注
拉黑
举报
举报
确定要拉黑库特吗?
发布(24)
评论
刷题
收藏
库特
关注TA,不错过内容更新
关注
2020-06-06 23:45
已编辑
浙江大学 算法工程师
牛牛掷硬币
50分做法 由于n只有100,所以直接循环保留两位小数转换成字符串返回即可,注意精度问题,0.125如果直接输出是0.12,这里要补一下精度(比如+1e-9再输出)。时间复杂度o(n),空间复杂度o(1)。 100分做法 可以发现n>=9时概率保留两位只有0.00了,所以打表打出前9个的答案即可。如果不打表9以内的数可能会出现精度问题,出就出在n=4答案是0.125上,直接保留两位输出这个数你会发现输出的是0.12而不是0.13,所以先算小数再转化成字符串的做法请注意补精度。个人感觉数也不多,还是打表更加简单。时间复杂度o(1),空间复杂度o(1)。代码如下: class Solutio...
0
点赞
评论
收藏
分享
2020-06-04 01:51
已编辑
浙江大学 算法工程师
牛牛打怪题解
30分解法 首先将防御力排个序。我们把防御力最高的怪防御力视为m,答案可以从m向上while(1)暴力判断每一个答案是否合法,循环次数最多n-1次,每次判断合法最多n次,时间复杂度o(n^2),空间复杂度o(1)。 100分解法 解法1:dp 首先将防御力排个序,第一只怪最少要在在第DEF[0]天杀死,而第二只怪最少要在在 "图片标题") ,所以只需要递推 "图片标题") 然后输出dp[n-1]即可。dp的时间复杂度o(n),排序的时间复杂度o(nlogn),所以总体时间复杂度o(nlogn),空间复杂度o(n)代码: int dp[1000005]; ...
0
点赞
评论
收藏
分享
2020-06-04 00:45
浙江大学 算法工程师
怕npy的牛牛题解
30分解法: 可以枚举所有子串,子串一共有n^2个,然后再对每个子串o(n)判断是否同时含有n,p,y即可,时间复杂度o(n^3),空间复杂度o(n)。 100分解法: n范围1e7,对于1s的时间o(nlogn)的算法都很难通过,考虑时间复杂度o(n)的算法,很容易想到尺取法(也就是two-points)。首先移动右端点找到第一个含有npy的区间,因为这一时刻子串刚含有npy,所以此时右端点向左移动一个单位就不同时含有npy了,所以用 更新最大长度。然后每次更新后移动左指针至不包含npy,再移动右指针至第一次包含npy即可,重复此次操作直至右端点越界即可。时间复杂度o(n),空间复杂度o(1...
0
点赞
评论
收藏
分享
2020-06-03 03:14
已编辑
浙江大学 算法工程师
牛牛拆数题解
20分解法 n只有5,一个数一个数判断就好,枚举从n个数选(1-k)个数使用魔法的所有可能即可。空间复杂度o(n),时间复杂度(2^n)。 40分解法 暴力判断一个数是不是素数,先记录素数个数。然后对于每个非素数,暴力判断能不能拆出2个素数(这样的数贡献为2),如果不能再判断能否拆出1个素数(这样的数贡献为1)。对于每个素数,判断能否拆成两个素数(这样的数贡献为1)。因为判断一个数能否拆成两个素数需要一个循环遍历,每个数拆成两个数又需要一个循环,再判断拆后两个数是否为素数,暴力判素时间复杂度为o(n^0.5),所以整体时间复杂度o(n^2.5),对于n=5000来说时间不是很充裕,考虑用线性筛...
0
点赞
评论
收藏
分享
2020-06-03 00:14
已编辑
浙江大学 算法工程师
热心的牛牛题解
30分解法 由于k最大范围是100,所以只需要从0向上遍历即可,假设牛牛有x块糖果,他的n个朋友每个至少有x+1块糖果,所以只要在遍历过程中遇到,说明此时糖果不够了,跳出循环输出即可。最多遍历k次,所以时间复杂度o(k),空间复杂度o(1) 100分解法 这里介绍两种做法 解法一:二分,时间复杂度o(logk),空间复杂度o(1) 思想和30分解法相同,同时我们不难发现这个问题是单调的,所以我们只要令l=0,r=k每次二分判断就能得到我们想要的答案。但是二分时有一个比较坑的易错点,就是n*(x+1)会爆long long。这里可以用__int128判断一下他们的乘积,当然这个问题也可以通过修改...
0
点赞
评论
收藏
分享
2020-07-08 15:50
已编辑
浙江大学 算法工程师
牛牛组数题解
20分解法 由于n只有5,直接暴力枚举或者爆搜即可,时间复杂度o(n^n),空间复杂度o(1) 50分解法 贪心思想,不难想到应该令k-1个数一位,1个数n-k+1位。之后,因为越大的数作为高位对和贡献越大,所以将字符串里的元素从大到小排序一下,再将前n-k+1位作为第1个数,剩下k-1位作为剩下k-1个数,加出来的和即为最大值。由于加法是大数相加,所以要用到高精度。一般的高精度一次相加时间复杂度为o(n),所以加k-1次,时间复杂度为o(nk),空间复杂度为o(n)。 100分解法 其实就是在50分做法上做一些优化,虽然正常的高精度加法一次是o(n)的,但是我们的加法很特殊,因为每次都只加一...
0
点赞
评论
收藏
分享
2020-05-28 16:17
已编辑
浙江大学 算法工程师
简单的公式题解
20分解法 由于n最大只有1e3,所以只需要开出两个数组a,b,递推得到a[n]%mode的值和b[n]%mode的值,然后将他们的乘积%mode后返回即可,时间复杂度o(n),空间复杂度o(n) 50分解法 此时n最大为1e7,递推的时间复杂度和空间复杂度都为o(n),虽然此时时间上还是够的,但是32MB开不下1e7的空间,哪怕ab共用一个数组也会爆内存。此时考虑每一项的值只和前两项有关,所以可以使用滚动数组优化一下递推,从而使递推的空间复杂度变成o(1)(时间复杂度仍为o(n)) 100分解法 n最大为1e18,此时o(n)的做法显然会超时了,考虑转移是一个递推式,我们只要构造两个矩...
0
点赞
评论
收藏
分享
2020-05-28 14:12
已编辑
浙江大学 算法工程师
星球游戏题解
50分解法 由于n很小只有100,我们可以用建一个n^2的矩阵,用floyd,dijkstra或者spfa等等最短路的相关算法跑出每个点对见的最短距离,然后再判断两个点是不是一个是牛牛占领的星求,一个是牛妹占领的星球即可。时间复杂度和空间复杂度根据选择的最短路算法而不同,如果使用floyd时间复杂度为o(n^3),空间复杂度为o(n^2)。 100分解法 这里提供两种做法 1.跑min(p,q)次dijkstra算法,时间复杂度为o(nlogn*min(p,q)),空间复杂度o(n+m) 虽然p+q的值很大,但是p和q中小的值并不大,我们可以分别以p和q中少的点为起点跑最短路,然后每次跑完最短...
0
点赞
评论
收藏
分享
2020-05-28 13:17
已编辑
浙江大学 算法工程师
牛牛摇骰子题解
20分解法: 由于最多的查询次数只有5次,我们可以每次根据p的值进行查询,查询方法可以用bfs,每次查询复杂度o(P)时间复杂度o(TP)。空间复杂度为o(TP)。这里如果用bfs时有一个需要注意的地方,就是我们要到达的bfs的可行点的范围不能只设为0-p。打个比方,我们要到点8,最小步数是2:一.向左走一步3 二.向右走一步11,但不论我们按什么顺序执行这两步都会走出0-8这个区间,所以要注意给可行区间至少在一个方向留出多余的空间来判定。 50分解法: 我们发现可以先将p范围内所有的的值对应的答案全部查询出来,将答案打表存在一个数组里,这样对于每次查询我们可以o(1)的获得答案,时间复杂度o...
0
点赞
评论
收藏
分享
1
2
创作者周榜
更多
关注他的用户也关注了:
牛客网
牛客网在线编程
牛客网题解
牛客企业服务