- 博客(13)
- 收藏
- 关注
原创 洛谷 最小生成树模版 代码AC 最新
因为是最后一个WA了 所以下载了数据点,看题解没有一个是输出orz的 结果最后一个就是要输出orz 给我气到了 所以写了这个文章。
2024-08-07 16:33:52
366
原创 2024牛客暑期补题 4 I Friends
其实就是在构建完图的情况下,自己的脑子里面要有一个构件图,在一个一维数组里面(图的构建是二维的,但是抽象来说用双指针就是一维),我们在右指针所指的map里面count所指向的节点(我们先前的map已经进行了排序,所以在进行for操作的时候,各个节点上下是挨着的),map里面的指向是 u->v 但是在查找当中只要两个之间有联系就可以,所以可以直接count。最后就是result直接就是右指针的位置减去左指针位置就是区间的长度 然后看代码就行.用到图论的知识 以及set的自动排序和去重 以及双指针就可以做。
2024-08-05 15:58:18
460
原创 没啥内容 主要就是感叹一下其中的一个点的代码的巧妙
其中的覆盖 nextdistance=max(nextdistance+nums[i[);让我感到代码的奇妙,大家可以去试试,刚好可以覆盖上去区间,并且丝毫不差。代码随想录的贪心算法中的跳跃游戏2。
2024-08-02 13:49:11
363
原创 学习经验-并查集+kruskal算法 图论知识小总结
然后kruskal先对val排序,sort(Edge.begin(),Edge.end(),cmp) Edge和edge别弄混了奥,然后因为我们要进行生成最小生成树,然后进行题目的解答,所以我们和并查集混起来使用,所以就直接for循环 1到最后一个节点。②find函数:用来找到输入节点的祖先,由于防止过多的递归,可以直接用find返回的结果(也就是祖先)直接复制给该节点,那么得到的结果就是 该节点直接指向祖先,可以极大减少时间,即:father[u]=find(father[u]);并查集主要有四个函数。
2024-07-29 16:59:48
406
原创 自己的经验总结一下二维前缀和
我们要在arr【i】【j】的那个格子上,对,就是二维数组arr上,在我们需要的任意矩阵i j对应的arr【i】【j】为基础,然后pre【i】【j】那一整片的整个矩形面积的求和就是 ①以arr【i】【j】为基础 ②两个小的二维数组相加 ③ 减去重复的一个,是一个二维数组即可。那么就是 pre[i][j]=pre[i][j-1]+pre[i-1][j]+arr[i][j]-pre[i-1][j-1];一般做题都是做的是任意i j 的矩阵,然后求和。然后重点就是构建任意i j的二维求和矩阵;
2024-07-27 16:33:44
468
原创 记录一下学习的经历
二分的意思不仅仅只是查找一下答案,在一定的数组范围内找到题目所给的答案那么简单,而是在一个很难求的一大段比如1到1e8区间或者更大long long区间之内直接可以定位到正确答案,而又是二分思想,所以就算是再大的区间时间也是非常的少的,那么我们可以直接用int left赋值为答案的最小值,int right赋值为答案的最大值 mid为中间值 然后套用二分思想,在mid判断哪里改一下,改成 if(check(mid)==1) 那么就 后面的一样 ==0有怎么样。三分我后面把二分题刷完再看。
2024-07-12 17:02:46
179
原创 P1065 [NOIP2006 提高组] 作业调度方案 自我经验总计附上题解
本题最大的难点就是变量太多了,逻辑很绕,第一次看的时候自己都懵了。//6.在当前机器上,最早时间为起点向右扫,找到存放区间。//2.找到工件,找到插入的这个工件的工序。//1.给定安排顺序,找到一个需要的工件。//4.找到这个工序需要花多少时间。//每个工件 每个工序的机器编号。//每个工件 每个工序的工作时间。//3.找到需要在那个机器工作。//5.找到工序最早开始的时间。//记录当前这个工件是哪个工序。//记录工序的结束最后时间。//7.将工序放在空位上。//每个机器都有时间轴。
2024-07-10 15:08:00
432
原创 P1540 [NOIP2010 提高组] 机器翻译 经验总结
刚刚开始的思路是(这个时候还没有意识到如果有可以用得到STL容器的时候,用的话就可以得到很大的便利这回事,劝大家好好了解STL,当然本人也是刚学)输入 int[m+3]这个数组当中,然后进行一系列操作。输入12以后又要输入1 所以要for循环遍历一边 然后找到1所以要continue 然后到输入5然后到4 此时已满 要进行覆盖 所以又要for循环 arr[j]=arr[j+1] 然后又要num++(我们要输入的前面就要写),然后又要判断重复,很麻烦。每一次输入我们就让对应位置的元素变成false。
2024-07-06 21:32:07
337
原创 洛谷P1102 A-B 数对 自己的理解
所以我们先用arr[200010]输入数据 然后arr[i]=arr[i]-C;那么此时我们的arr[i]里面的数据全都是等于B。题目很容易理解 第一次做的时候用了forfor n²过不了,拿了76.而这个B并不是一个固定的数值,而是一个“集合”类似。接下来写一下自己的map的理解这个题。那么对于固定值C,我们可以A-C=B。自己学习过程的理解;很多次以后用了map。首先题目是A-B=C。
2024-07-06 13:16:22
453
原创 总结一下一些做题输入的一些方法
那么此时可以直接用for(int i=1;i<=n:i++){比如sum+=arr[i];第一种是给了特定的数字,例如n为5 然后要输入五行输入。第二种是没有特定数字,直接是一行数据,并且中间有空格。但是如果题目里面有限制条件可以跳出的话可以利用。然后可以用for(int i=1;
2024-07-04 20:20:28
159
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人