牛客网
小鹏同学好!
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
兔子的逆序对---归并排序求逆序对数
这题数据范围很大,直接用暴力枚举的方法肯定是过不了,但究竟能过多少呢?菜鸡试了下,发现能过40%!!!想想看如果这题,有人用了归并排序或者树状数组,但是,但是他没用快读,也没法AC,你就简单的暴力就过了40%,想想就很美滋滋。有关归并排序的参考博客:https://ac.nowcoder.com/profile/120329317采用归并排序后的AC代码:using namespace std;#include<bits/stdc++.h>int a[100005],b..原创 2020-09-11 14:47:45 · 256 阅读 · 0 评论 -
华华教月月做数学---快速幂 & 快速乘 |__int128
华华你可真棒,自己要帮月月做题目,又不会写程序还想偷懒!这题属于快速幂的模板题,但与模板不同的是数据范围更大了,1e18 的数据范围如果直接×的话会爆LL。所以除了采用快速幂外,还采用了快速乘的方法,有关快速乘的说明,可以参考下面这篇博客。https://www.cnblogs.com/812-xiao-wen/p/10543023.htmlusing namespace std;#include<bits/stdc++.h>typedef long long LL;LL m原创 2020-09-11 14:09:23 · 300 阅读 · 0 评论 -
指纹锁---带你见识set的强大
对于100%的测试数据: 1 ≤ k,m ≤ 1000000 数据量较大,注意使用更快的输入输出方式。这题也是模拟题,难点在于如何存数据,以及数据范围较大时,如果直接查找可能会超时。还在犹豫要不要二分查找时,看到了下面的题解,我才知道set居然这么强大,确实在这里使用set非常的合适,set内置的find()函数,复杂度是**O(nlogn)**的,不用担心查找会超时。同时set是默认不同的才能插入,但这里不同的是,它定义的“不同”是在误差k内的。所有需要像sort函数中的cmp一样,单独写一个..原创 2020-09-10 16:22:55 · 1677 阅读 · 0 评论 -
小C的记事本---模拟 & 栈
这题属于模拟题,但有一个地方较难处理——操作4,undo(),之所以这么说是因为如果你仔细看案例的话会发现,它倒退可以连续倒退多次,而不是一次。我最开始是按照只能倒退一次来写的,那样就很easy了,单独定义string类型变量s1,用来记录每次操作前的s0;但测试案例的时候我就发现了问题,也间接暴露了自己没有好好看案例的事实。所有怎么样才能每次操作都记录下来呢?定义多个string类型的数组?也许是可以的,但是会很麻烦。栈——在这里不是很恰当嘛!每次操作都是对栈顶进行,同时每次操作完都压栈,如果遇到操.原创 2020-09-10 16:13:56 · 254 阅读 · 0 评论 -
大吉大利,今晚吃鸡 --- 汉诺塔的变形
这种类型的题目,与其说是编程题不如说是数学题。下面这段是我引用的其他博主写的题解:对于n个盘子,我们可以把它分成n-1n−1个盘子和最后一个大盘子。同样设F(n)F(n)为移动所需步数。将n-1n−1个盘子借助B柱移动到C柱上,这一过程移动的步数极为F(n-1)F(n−1)将大盘子由A柱移动到B柱上,此时需要一步将n-1n−1个盘子借助B柱移动到A柱上,这一过程移动的步数同样为F(n-1)F(n−1)将大盘子由B柱移动到C柱上,此时需要一步将n-1n−1个盘子借助B柱子移动到C柱上,此时.原创 2020-09-10 00:30:31 · 248 阅读 · 0 评论 -
栈和排序 ---被坑的好惨
快被牛客的这道题坑死了!!!按照自己的思路试了好久都不行,还因为题目里要求的最后不能有空格导致我写的极为复杂,后来发现有没有空格根本不影响啊这!!!而且牛客里面很多人写的题解看起来就不对,果不其然,一测居然一个测试点都没过。。。。。下面的代码,改了好几遍,重写了2遍,最后居然只能过一个测试点,想不通为啥啊!!!//这代码是错的,希望有大佬能指正下我,为啥他不对#include<bits/stdc++.h>using namespace std;stack<int> a;.原创 2020-09-10 00:24:55 · 318 阅读 · 0 评论 -
矩阵消除游戏---贪心+枚举
这题是真的超出自己能力范围了,写完数据读入后,想了一会竟无从下手,不知道该怎么写。看题解的过程中也很迷,觉得很麻烦,贪心的思想却又加上了枚举(这点可以从题目给的数据范围看出,居然只是一个15*15的矩阵)。思路:先读入数据,然后将每一行的总和记录下来;利用二进制位运算,用二进制串来表示这一行是否被选中,从0到2^n-1进行枚举,将所有行可能被选中的情况全部枚举一遍;对于每次枚举,将相应列的和算出来,因为选中行后,该行内的元素会变成0,所以算列和的时候就不能算进去;将列和排序,从大到小选择剩..原创 2020-09-06 00:21:35 · 231 阅读 · 0 评论 -
「土」巨石滚滚--贪心
看完题目,应该马上能想到的是先撞比自己小的,撞回馈多的,但具体该如何写呢?可能需要分析下才行。首先在读入的时候,就可以先算出差值v=b-a;然后我们想如果差值都是正的,那么我们肯定是先撞它,因为越撞越多嘛,那都是正的的情况下,先撞谁呢?肯定是先撞损失小的,这样就能尽量使自身变大,从而撞更多的;其次,那如果差值都是负的,我们肯定是先撞回馈多的,这样能让自身损失尽可能靠后;最后,如果差值正负不同,这也是最简单的,按照最开始的思路,必然是 先撞正的再撞负的。按照上面的顺序排好队再依次遍历,一个一个撞就.原创 2020-09-06 00:03:37 · 270 阅读 · 0 评论 -
切长条--如何去贪心
using namespace std;#include<bits/stdc++.h>struct node{ int s,e,l;}a[32000];int n;bool cmp(node a,node b){ return a.s<b.s;}int main(){ cin>>n; for(int i=0;i<n;i++) { cin>>a[i].s>>a[i].l; .原创 2020-09-05 00:09:47 · 178 阅读 · 0 评论 -
值周 & 校门外的树
从暴力到差分/前缀和到离散化暴力这题因为数据规划只有1e5 和 100, 所以直接暴力遍历就可以解决.//暴力方法using namespace std;#include<bits/stdc++.h>int tree[10005];int main(){ int l,m; cin>>l>>m; int left,right; for(int i=0;i<=l;i++) tree[i]=1; for(int i原创 2020-09-04 22:51:04 · 217 阅读 · 0 评论 -
激光炸弹--前缀和->二维前缀和
这题拿到手后,一直在纠结[5000][5000]的二维数组能不能开,后来算了下500050004=1e8B=100MB<512MB,所以是可以的。但还是不知道该怎么做,一点思路都没有╮(╯▽╰)╭没办法只能看题解,采用前缀和的思想,考虑二维前缀和来求解。参考这张图来理解下面的Code:using namespace std;#include<bits/stdc++.h>int mp[5005][5005];int main(){ int n,r; cin&.原创 2020-09-03 17:45:23 · 267 阅读 · 0 评论 -
拼数--贪心
这道题如果是自己第一次做,咋一看会觉得只要按序排即可,数字大的排前面数字小的排后面,直接用字典序就行。但是,但是,但是,这样会出错:比如,3,31,34;应该是34331,而不是34313,这就出问题了呀。那怎么办,继续比较第二位?这样做会很复杂,题目可以继续恶心点,331,34,335,3;应该是335343331,而不是335343313.所以继续比较下一位这种方法不大可行,有没有什么更好的方法呢?有!只要a+b>b+a,那么a不就在b前面了嘛,所以就很easy了。using names.原创 2020-09-02 20:33:36 · 207 阅读 · 0 评论 -
纪念品分组--双指针&贪心
今天做题感觉好啊,第一题就秒杀,哈哈哈题解:首先将纪念品按价格从小到大排序,然后用2个指针i,j分别指向头和尾,直到i>j时才退出。因为题目说了每组最多只能有2个纪念品,且纪念品价格之和不能超过w,那么如果当前状态下的a[i] + a[j] > w,那么a[j]只能独自成为一组了,因为此时的i只要向后移动,就一定是非递减的。using namespace std;#include<bits/stdc++.h>int main(){ int w,n; int.原创 2020-09-02 20:09:32 · 257 阅读 · 0 评论 -
铺地毯---思维题hhh
看到数据规模后就知道,暴力肯定是不行了,想了一会也没想到什么好的方法,看了一眼题解,思维题,从后向前遍历就好了hhhh然后就非常easy的完成了这道题using namespace std;#include<bits/stdc++.h>const int maxn=1e5+5;int a[maxn],b[maxn],g[maxn],k[maxn];int main(){ int n; cin>>n; for(int i=1;i<=n;i+.原创 2020-09-01 16:06:59 · 187 阅读 · 0 评论 -
糖糖别胡说,我真的不是签到题目---是的,你不是
这道题最开始写的时候是按照题意,一步一步,从前向后分析的,但是写出来的代码能过案例,测试后却是0分,很难受,到现在也没想明白为啥,就算超时啥的也不应该0分呀,所以贴在下面,希望有善良的大佬能帮忙瞧瞧。//Wrong Wayusing namespace std;#include<bits/stdc++.h>struct node{ int group; int sk; bool alive;};node a[50005];int c[1000000];.原创 2020-09-01 15:45:39 · 286 阅读 · 0 评论 -
简单并查集-加边的无向图
并查集小白入门并查集最常用的两个函数就是find() 和 merge();代码如下所示:这里最后统计边数时,可以用set来记录(依次遍历,将每个点的父节点加入集合,因为set默认去重,所以相等的父节点自动过滤掉);也可以直接根据f[i] == i 来判断,因为合并完所有的节点后,每个并查集内只有一个点满足f[i] == i 。ps:会用并查集这题真的是秒出答案啊!using namespace std;#include<bits/stdc++.h>const int maxn=.原创 2020-06-02 22:09:41 · 291 阅读 · 0 评论 -
FBI树--字符二叉树
小记花了好长时间,这道题主要是考二叉树的后序遍历,是个模板,但是不同于一般的根据数组插入数字构造二叉树,本题中的二叉树结点数据是字符,并且是根据字符串算出来了。postOrder() 函数就是原版的后序遍历函数不需要修改的,不同的是newNode() 需要稍加修改,通过调用函数tp()来计算当前节点的data;最开始tp函数写错了以至于虽然能得到序列但序列的值不对。create() 函数修改比较大,直接递归调用create()进行二叉树的构造,递归掌握的还是不太好,花了好一阵功夫才写好create(.原创 2020-05-20 15:22:24 · 483 阅读 · 0 评论 -
逆序数-O(nlogn)
方法1:数(O(n^2))只能过3/4的测试点using namespace std;#include<bits/stdc++.h>const int maxn=1e5+5;int a[maxn];int main(){ int n; scanf("%d",&n); for(int i=0;i<n;i++) scanf("%d",&a[i]); long long sum=0; for(int i=0;i<n-1.原创 2020-05-20 09:32:48 · 369 阅读 · 0 评论 -
数学考试--前缀和
//出错代码,只过了2/3的案例using namespace std;#include<bits/stdc++.h>const int maxn=200005;int a[maxn],sum[maxn];int main(){ int t,n,k; cin>>t; while(t--) { cin>>n>>k; memset(a,0,sizeof(a)); mems.原创 2020-05-17 23:02:11 · 245 阅读 · 0 评论 -
Selfish Grazing --贪心要得当
题目是英文的也有点长,英语不好的人看着都烦,大意就是给出n个线段,让你在n个线段里面选出尽可能多的不相交的线段。这道题适合用贪心去做,只需要按右边界排序即可。但在排序后需要遍历选择的时候我开始犯了个错,我每次都是用当前结点 i 的左边和 i-1 的右边进行比较,如果i的左边大于 i-1 的右边 ,那么结点i可以选,sum++。但这就有问题了,比如 [7,8] , [7,10] , [9,10] 三个线段,[7,10] 和[9,10]两个的先后顺序按照右边界来排序的话是未知的,若[7,10]在前,则[..原创 2020-05-16 23:24:26 · 283 阅读 · 0 评论 -
奇♂妙拆分-真莫名的过了
牛客网的这道题真的过得有点莫名其妙了。。。。开始以为1e9的数量级会超时,没想到直接AC了,“真” 奇妙!小记一下,思路就是遍历,从2开始,直到 i<=n 遍历结束,如果n能够除尽i则n/=i,同时sum++;这里如果参考案例1中的4会发现4=1*4(因为题目要求不同数字),而程序里面实际上是将4/2了,但其实不影响结果,因为4/2=2后i=3,依旧无法继续下去,所以最后得到的sum值是不变的。using namespace std;#include<bits/stdc++.h>.原创 2020-05-16 23:08:29 · 307 阅读 · 0 评论
分享