首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
在线笔面试、雇主品牌宣传
登录
/
注册
fuzhiji
获赞
135
粉丝
37
关注
1
看过 TA
30
男
惠州学院
2022
算法工程师
IP属地:广东
暂未填写个人简介
私信
关注
拉黑
举报
举报
确定要拉黑fuzhiji吗?
发布(23)
评论
刷题
fuzhiji
关注TA,不错过内容更新
关注
2020-04-20 14:00
惠州学院 算法工程师
糖糖别胡说,我真的不是签到题目-------前缀和(附带难度题目提高版)
对于这道题,如果按照朴素算法来说,第一反应是对于每个位置i的糖糖,处理1 ~ i-1 被消灭的糖糖有哪些,给他们标记,然后最后统计一遍,很显然,这样复杂度很高,不足以通过这道题,所以我们换种处理方法。先看m次操作,有影响的一定是 ,我们可以维护一个前缀和, 表示第 项前面有几次操作,这样做的意义是什么呢,对于 表示位置 的糖糖比位置 多了几次赋值 的操作。 对于每个位置i的糖糖,我们考虑是否会被击杀,我们可以发现,当且仅当 位置存在和糖糖 不是一队且 的时候,位置 的糖糖才会被击败,将式子移项即可发现, ,所以我们可以维护这个式子的最大值即可,由于是维护 到 的最大值,所以只需要倒着扫描数组即...
moosssi:
如果队伍数量达到n的话,其实可以同时维护一个最大值和次大值,并保证两个不属于同一支队伍即可,复杂度还是可以做到O(n)
0
点赞
评论
收藏
分享
2020-04-20 11:58
惠州学院 算法工程师
华华给月月准备礼物----经典二分
我们考虑朴素算法,假设Max为给出木条的最大长度,直接枚举长度 0~Max,找到符合情况的最大值即可,由于最大长度可以为1e9,复杂度最差为O(1e9n)显然不行,观察发现,如果对于裁剪出长度为x的木条最多能凑出sum根,那么裁剪x+1长度的木条,肯定不会得到sum+1根,很明显,具有单调性,我们就能考虑二分。就像猜数字一个,每次猜一个数,判断能不能,如果符合,就可以往大的猜,如果不可以,就缩小。由于木条最大长度是1e9,所以二分复杂度为O(log1e9),对于判断,只需要遍历一遍全部木条即可,复杂度为O(n),总复杂度为O(nlog1e9)。 #include <cstring>...
0
点赞
评论
收藏
分享
2020-04-15 15:18
惠州学院 算法工程师
逆序对----找规律+快速幂 or 递推+矩阵快速幂
方法一:找规律+快速幂假设需要构成长度为n的字符串,任取其中两个元素组成1 0,那么会有种选择方法是不一样的,对于长度为n的字符串,选择一种方法后,还会剩下 个字符,每个字符可以是0或1,那么就有种可能,所以可以推出答案式子因为有个取模操作,所以除法要换成乘法,因为这题的公式可以抵消,所以不需要求逆元。 补充说明:求2关于质数mod的逆元可以根据费马小定理 除以2%mod等于乘以2^(mod-2)%mod #include <cctype> #include <cfloat> #include <cmath> #include <cstdio>...
0
点赞
评论
收藏
分享
2020-04-14 23:01
已编辑
惠州学院 算法工程师
Treepath---简单dfs or 基础dsu on tree
方法一------简单dfs:dep表示深度,lca表示最近公共祖先对于两个点u和v,u到v的路径长度是dep[u] + dep[v] - 2 x dep[lca(u,v)]很显然 2 x dep[lca(u,v)] 一定是个偶数,所以,要想路径也为偶数,那么dep[u]和dep[v]一定是同为奇数或者同为偶数,所以,只要是深度奇偶性相同的两个点,肯定可以组成一条路径。 由于u->v和v->u只算一次,显然,就是在奇数深度节点中任意取两个,在偶数深度节点中任意取两个,那么就是组合数了,我们只需要求出以任意节点为根,计算深度奇数节点个数cnt1和深度偶数节点个数cnt2即可,答案是...
0
点赞
评论
收藏
分享
2020-04-14 15:43
惠州学院 算法工程师
Xorto----前缀和
由于题目要求的是两个连续的区间,下文会称其为左右区间,我们可以枚举右区间的起点,不断往右扩展,每次答案加上 与右区间异或和相等 的左区间的个数 即可。如何处理左区间,每次枚举右区间起点的时候,我们令右区间起点的前一个数为左区间的终点,往左边扫描,加入新的区间值,由于题目给的元素大小不超过1e5,可以开数组存,如果元素大小过大,用map也是可以的,复杂度为n^2log(n)也可以过1000的数据。 #include <cctype> #include <cfloat> #include <cmath> #include <cstdio> #incl...
0
点赞
评论
收藏
分享
2020-04-13 11:27
惠州学院 算法工程师
Accumulation Degree----基础树形dp
题意转换:假设f(x)为x节点到叶子节点的最大流量,求最大f(x):x属于1~ndp[u]表示每个节点u往儿子方向流的最大流量。对于全部不为叶子节点u,深度往下传的流量最优为dp[u]+=min(dp[u_son],flow(u,u_son)),有点类似于贪心的想法。叶子节点x为dp[x]=flow(x_fa,x);然后考虑每个节点通过父节点的边到其他叶子节点的流量,由于我们已经预处理了全部dp[],所以对于节点u和其父节点u_fa,u节点通过其父节点流入其他的叶子节点的流量可以是min(flow(u,u_fa),dp[u]-min(dp[v],flow(u,u_fa)));不断更新dp即可,...
0
点赞
评论
收藏
分享
2020-04-09 10:59
惠州学院 算法工程师
Running Median---优先队列or主席树
题目链接:https://ac.nowcoder.com/acm/problem/50940题解:方法1:对于动态维护中位数,可以选择使用两个优先队列,一个大优先一个小优先,并且保证大小两个优先队列的size相差不超过1即可,中位数一定会在size较大的那个队列的top位置。实时更新中位数,比大于等于中位数的数丢进小优先队列,否则丢进大优先队列,然后维护两个队列的size不超过1即可,比较简单。 方法2:主席树静态查询第k大模板题,建树之后,对于每个符合的奇数段[1,x],x是奇数,查询区间[1,x]的第(x+1)/2大元素即可 由于方法2的代码是模板题,就不提供了方法2代码了。下面是提供的是...
0
点赞
评论
收藏
分享
2020-04-08 22:18
惠州学院 算法工程师
城市网络——在线算法
题目链接:https://ac.nowcoder.com/acm/problem/13331来份在线查询的代码,先说这道题,在第一遍dfs求重儿子的时候,顺便处理数组dp[maxn],其中dp[u]为从节点u到根节点1有几次购买操作,如何求答案呢? 假设有两个点x和y,其中y----是x的某一级祖先,而且y的值是从x到根节点路径上第一个比x大的节点,很显然,dp[x]=dp[y]+1。可以配合线段树维护实现查询第一个比x大的节点位置的操作。 本题目查询节点u和v,其中v保证是u的祖先节点。对于u到v的路径上,我们找到第一个要购买操作的节点位置------假设为u1。对于u到v的路径上,我们找到...
0
点赞
评论
收藏
分享
1
2
关注他的用户也关注了:
牛客网
牛客企业服务