首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
Peterliang
获赞
754
粉丝
112
关注
8
看过 TA
674
男
南昌大学
2023
golang
IP属地:浙江
我劝你别润,我润你别劝
私信
关注
拉黑
举报
举报
确定要拉黑Peterliang吗?
发布(201)
评论
刷题
收藏
Peterliang
关注TA,不错过内容更新
关注
2020-08-19 10:50
已编辑
南昌大学 golang
动态规划(DP)各类模板题小结
dp,大致是分为求最长连续子序列的和,最长非递减子序列,最长公共子序列,最长回文子串这几大类题目,这些题目,都大致的讲了一下dp的思想,对于一些正规的比赛的题目来说,个人认为还是掌握dp的思想是很重要的。毕竟,万变不离其宗嘛。 最大连续子序列的和 比较朴素的方法就是通过求两个for循环,枚举两个端点,然后通过计算该区间的端点之间的数之和,这样下来的时间复杂度就是n^3,数据量大的数据肯定是不适合的。而且,就算是利用前缀和来进行解题的话,先扫一边数据,然后记录数据的前缀和,然后再利用for循环来进行枚举两个端点的话,其时间复杂度也有N^2,这样看来应该要另寻出路了。我们拿到这个题目的时候,我们的...
0
点赞
评论
收藏
分享
2020-07-02 20:41
南昌大学 golang
搜索过程中记录改变方向的次数
其实,题目很简单,就是类似于给你一个二维矩阵,求从A到B的转的次数最小是多少。附加条件就是这个过程之中会有一些障碍物,你不能通过,也可以设定这个过程之中只能往哪个方向走,当然,这不是这题的限制条件。先来整理以下bfs的思路吧,bfs就是将你要走的点分成几个不同的层次,某些点在同一个层次,然后,你按照顺序,将每一层的点遍历之后才能遍历下一层的点,然后逐层判断所求结果即可,通常的方法就是放到一个队列queue里面保存,然后按照顺序进行遍历。对于dfs的思路,就是往深处遍历,你每走到某一个点,你可以选择选这个点或者不选这个点,对于选择或者不选择这个点,都会有不同的结果,然后按照答案对应选择,这里面,...
0
点赞
评论
收藏
分享
2020-07-01 20:56
南昌大学 golang
牛客练习赛66题解(C题)
思路:贪心。这个题目首先可以通过自己的模拟,然后得出基本的规律。我们看,每个数都加上一个x的话,其实他们之间的差值是不变的。所以,我们可以考虑它的ans是否与他们的差值有关,然后自己可以通过模拟得出,这确实有关。我们也可以利用差分的知识得出结论,最终的答案就是在这些数的所有的差值之间找出一个最大的gcd。举个栗子,对于a[i]和a[j],我们假设gcd为a[i]和a[j]的最大公因子,a[i]%x==0,a[j]%x==0,那么(a[i]-a[j])%x==0,那么,既然a[i],a[j]都会改变,那么我们就不通过这些数来求,我们就通过他们的差值来求,那么该gcd就是这些差值之间的最大公因子,...
0
点赞
评论
收藏
分享
2020-05-25 19:01
南昌大学 golang
第十五届中北大学算法与程序设计比赛部分题解
A题:俄罗斯方块 思路:模拟题,只要模拟出4个图形落下后的矩阵的01情况,同时,每步之后不断更新10列的所能下落到的最小值h[11](从1-10)因为这是从下往上的,所以只要不断更新h的各元素的值即可。下落一个图形的时候,找到该图形所覆盖的区域的(也就是所覆盖的相关的列)高度的最小值,图形就是在该值-1,也就是在该值的上面。出题人还是减低了难度,如果四个图形的底不是平行的话,那就要考虑比较多的了。代码: #include<bits/stdc++.h> using namespace std; int a[12][12]; int h[12]; int main(){ int n; ...
0
点赞
评论
收藏
分享
2020-05-23 10:42
南昌大学 golang
练习赛64A,B题解
每次都是前40分钟签到,后面基本都在摸鱼了....... A题 思路:有点div2A题的味道,起始思路很明显,我们观察1412,他是有四个部分组成的,也就是对于给定的1,2,4的个数,我们如何进行分配,使得他的子序列的情况最多。至于一定要找规律的话,建议从少的开始找起,然后大概就能发现规律了。我们发现,对于这些位置我们采用111...144444...44111...111222222这样的方法来分最好,结果就是连续的个数的乘积就是了,但是对于1的两个位置来说,我们要尽量采用平均分法就行了。还有就是,不开longlong见祖宗。代码: #include<bits/stdc++.h>...
0
点赞
评论
收藏
分享
2020-05-21 08:50
已编辑
南昌大学 golang
牛客算法周周练7签到题题解
数字比较 思路:签到题,这题应该是高中数学考试基本必考的一题,思路很简单,本来想用矩阵快速幂的,但发现a,b都很大,矩阵快速幂肯定爆,既然会爆掉。然后,我们用对数来转换,开longlong就不会爆了。代码: #include<bits/stdc++.h> using namespace std; typedef long long ll; int main(){ int x,y; cin>>x>>y; ll a=y*log(x); //巧妙转换,指数换对数 ll b=x*log(y); if(a>b) cout<<">"<<...
0
点赞
评论
收藏
分享
2020-05-19 16:17
南昌大学 golang
牛客小白月赛25部分题解
从易到难,总体来说,这次的小白月赛我认为是比较正常的了,没有考什么高深的算法,基本都是基本功 H题:神奇的字母(二) 签到题:哈希。注意不是输入一行而是多行思路:对于每输入的一行单独处理,我们输入一行后,遍历每个字符,然后用mx(初始为-1)记录当前已知的出现最多的字符的个数,用key记录出现最多的字符,每遍历一个字符的时候,我们用哈希记录目前为止这个字符出现的个数,同时与mx比较,若大于mx,则key指向当前这个字符。代码: #include<bits/stdc++.h> using namespace std; int has[300]; int main(){ string ...
0
点赞
评论
收藏
分享
2020-05-02 12:04
已编辑
南昌大学 golang
IOI周赛16题解
A: 传送门:https://ac.nowcoder.com/acm/contest/5389/A 思路:根据求导法则,可知道答案要求的是n的阶乘,只要进行简单的模拟,一步一步的求出即可注意:开longlong代码: #include<bits/stdc++.h> using namespace std; const int mod=1e9+7; typedef long long ll; int main(){ ll n; scanf("%ld",&n); ll ans=1; for(int i=2;i<=n;++i){ ans=ans*i%mod; } print...
0
点赞
评论
收藏
分享
2020-05-01 21:25
南昌大学 golang
每日一题——华华给月月准备礼物
题意:原来有n根木棒,然后至少分成k根长,求每根木棒的长度最长为多少。思路:一个很显然的二分法求解,因为按照题目的意思肯定有一个是最长的,但是还要注意是否为单调变化,单调则用二分,有极值则为三分法,通过打表我们知道是单调的。特判:结果为0的时候,也就是怎么也找不到一个长度满足题意。代码: #include<bits/stdc++.h> using namespace std; int a[1000010]; int n,k; bool judge(int x){ //判段函数 int ans=0; for(int i=0;i<n;i++){ ans+=(a[i]/x); } ...
0
点赞
评论
收藏
分享
2020-05-02 11:26
已编辑
南昌大学 golang
科大讯飞比赛题解A-F
签到中的签到题 A:传送门:https://ac.nowcoder.com/acm/contest/5278/A 思路:用一个数组a[4]存放四位选手的分数,然后先做一个排序,首尾组合,中间两个组合即可,然后相减,结果加绝对值,因为可能减下来为负数(在这里竟然WA了一下,orz)。 #include<bits/stdc++.h> using namespace std; int main(){ std::ios::sync_with_stdio(false); cin.tie(NULL); int a[4]; cin>>a[0]>>a[1]>>a...
0
点赞
评论
收藏
分享
2020-05-02 11:32
已编辑
南昌大学 golang
算法周周练2:A-C
A:传送门:https://ac.nowcoder.com/acm/contest/5203/A 将每个数的每一位数先开一个数组存起来,然后在合成新的一个数。比如:2374,我们先放在a数组,分别为a[0]=2,a[1]=3,a[2]=7,a[3]=4,然后就可以将它重新组成之前那个数的相反数了。这样做的好处是可以不用考虑前导0的情况。 #include<bits/stdc++.h> using namespace std; int a[10]; int main(){ int n; cin>>n; int k=0; int num=0; int t=n; //注意,先...
0
点赞
评论
收藏
分享
2020-04-16 16:28
南昌大学 golang
每日一题4.16 逆序对
思路:本题主要要想到将问题转化,我们可以看到,n的取值范围实在是太大了,所以我们要将问题转化如果我们先使其满足条件,即每一个满足的字符串中肯定有一个1在左边,0在右边。那么,我们怎么找呢?就是用 ,就是从n个位置中会找到2个位置前放1,后放0的一共有几种情况。找到了这个之后,对于里面的每一种情况,我们已经确保了它是一个符合的01串,然后现在就要考虑的是如何填充剩余的n-2个位置,显然,当然是随便放0或1进去就行了。所以就总共有 种不同的满足条件的01串.现在,我们就要做的是如何求出这个式子。因为n十分的大,所以我们先求,也就是 ,但是显然如果直接就这样算分子的话,有可能会超出longlong范...
0
点赞
评论
收藏
分享
2020-04-14 14:50
已编辑
南昌大学 golang
牛客练习赛61题解ABC
A-打怪 传送门:https://ac.nowcoder.com/acm/contest/5026/A 思路:首先可以自己先去模拟一下样例是怎样实现的,熟悉一下思路。然后,我们可以看到,我是先手,只有当我的血量为0的时候,游戏才结束。在看到题目给出的数据又不是很大,所以可以模拟出双方每次的血量变化量,然后一边记下少了几个怪即可。但是这里我们要到单独考虑哪些情况下是-1.显然,如果毛怪一下都打不到你的话,你的血量就一直不变,如果在杀死每个毛球怪的循环中,你会被毛怪攻击到,那么肯定有这么一个回合,你的血量会为0。想清楚了这点,就可以写出代码了。 代码+详细注释 #include<bits/s...
0
点赞
评论
收藏
分享
2020-04-09 20:42
已编辑
南昌大学 golang
算法周周练ABE题解
A题 题意:将一个非递增数组的某个元素往前移至少k个单位,然后求哪种情况下移动之后数组与位权乘积之和最小。思路:前缀和+贪心+枚举。暴力解法肯定被T,可以证明,答案一定要在只能往前移恰好k步的时候取得。这个可以通过简单地模拟一下,因为这是非递增地序列,每往前移动一步,比如将a[i]移到a[i-1],那么就相当于是总的和-a[i],再+a[i-1],所以可得你每移动一步,你的和一定是减小或不变的,那就要恰好移动最少的步数k步就行了。往前移k步,假如在没有移动之前它的总和为sum,那么你将某个数x往前移动k个单位的话,那么你的sum就要在原来地基础上-xk,即sum-kx,然后,在你将这个数插入的...
0
点赞
评论
收藏
分享
2020-04-06 16:06
南昌大学 golang
每日一题4.2:月月查华华的手机(题解)
题目:题目大意:给出一个字符串,我们假设它为a,然后该给出若干字符串b,请你判断b串是否为a串的子序列串。(注意这里的子序列串是指不一定连续的串)本人只是把题解老师的思路用我自己的想法整理一遍,希望对大家有用。首先,这题暴力解法肯定是被T掉的。其实最主要的还是对母串进行预处理,按照题解老师的思路,我们要对母串进行如下处理:将每个字符后面的a,b,c...z的第一次出现的位置记录在数组里面,我们这里用temp二维数组存储。如果没有出现该字符,则用-1代替。接下来,我们看如何实现预处理: void deal(){ memset(ans,-1,sizeof(ans)); int len=a.leng...
0
点赞
评论
收藏
分享
1
9
10
11
12
13
14
创作者周榜
更多
关注他的用户也关注了:
牛客网
牛客网在线编程
牛客网题解
牛客企业服务