随笔分类 -  菜鸟的算法路

摘要:##简单介绍 堆排序就是利用堆这一数据结构来排序,堆使一颗完全二叉树,每个结点都不大于或者不小于他的儿子。关于排序的话,我们每次取出堆顶元素和堆尾的交换,然后由剩下的元素重新构建堆,最后我们将得到一个有序的序列。 ##Code #include<bits/stdc++.h> using namesp 阅读全文
posted @ 2021-01-03 21:18 Luglucky 阅读(149) 评论(0) 推荐(0)
摘要:##[戳我](https://www.luogu.com.cn/record/38515341) ##思路 悬线法,顾名思义,就是我们从一个点开始,想左上方出两根线,构成一个矩阵,然后遍历所有的点,取一个最大值就可以了。所以我们之前可以预处理出一个点可以到达的最上面的点和最下面的点,然后枚举宽度,对 阅读全文
posted @ 2020-09-17 20:08 Luglucky 阅读(271) 评论(0) 推荐(0)
摘要:##求最小值 while (l<r) { int mid= (l+r)>>1; if (check (mid)) r=mid; else l=mid+1; } ##求最大值 while (l<r) { int mid= (l+r+1)>>1; if (check (mid)) l=mid; else 阅读全文
posted @ 2020-08-24 19:11 Luglucky 阅读(196) 评论(0) 推荐(0)
摘要:##最大流 (洛谷 3376) #include<cstdio> #include<algorithm> #include<vector> #include<queue> #include<map> #include<set> #include<iostream> #include<cstring> 阅读全文
posted @ 2020-08-20 22:36 Luglucky 阅读(165) 评论(0) 推荐(0)
摘要:##概念 bitset是一个定长的二进制数组,它是经过压位的,每一位占一个bit,相当于一个数组的八分之一,所以十分社会。和数组一样它支持访问每一个元素,但是和数组一样他也需要一个长度,如果你需要的是不定长数组,那么你需要开一个bool类型的vector。当然我们可以把整形的和字符串类型的数组转为b 阅读全文
posted @ 2020-07-17 21:16 Luglucky 阅读(189) 评论(0) 推荐(0)
摘要:##题面 地图上有 N 个目标,用整数Xi,Yi表示目标在地图上的位置,每个目标都有一个价值Wi。 注意:不同目标可能在同一位置。 现在有一种新型的激光炸弹,可以摧毁一个包含 R×R 个位置的正方形内的所有目标。 激光炸弹的投放是通过卫星定位的,但其有一个缺点,就是其爆炸范围,即那个正方形的边必须和 阅读全文
posted @ 2020-07-15 19:48 Luglucky 阅读(136) 评论(0) 推荐(0)
摘要:##题面 给定一张 n 个点的带权无向图,点从 0~n-1 标号,求起点 0 到终点 n-1 的最短Hamilton路径。 Hamilton路径的定义是从 0 到 n-1 不重不漏地经过每个点恰好一次。 输入格式 第一行输入整数n。 接下来n行每行n个整数,其中第i行第j个整数表示点i到j的距离(记 阅读全文
posted @ 2020-07-15 15:56 Luglucky 阅读(346) 评论(0) 推荐(0)
摘要:##介绍 在写题目的时候我们常常会因为精度和位数溢出而苦恼,c++关于这部分的板子也实在是太过冗长,所以我们来了解一下java的大数知识。java里面的大数包括BigInteger和BigDecimal两类,分别代表的是整形大数和高精度大数,当然了,这些对象的内部实现也是由对字符串的操作得到的。首先 阅读全文
posted @ 2020-07-03 21:58 Luglucky 阅读(281) 评论(0) 推荐(0)
摘要:##卡特兰数介绍 有这样一个经典问题,我有2n个游客去景区旅游,每个游客需要支付50元的费用,但是只有n个游客手里刚好有50元,其余n个游客手里都只有100元,那么问,该如何购票才可以完全找零?首先我们考虑所有的情况,就是一个数列,我们选择其中的n个为50,其余n个为100,则根据排列组合数的定义我 阅读全文
posted @ 2020-07-03 18:55 Luglucky 阅读(805) 评论(0) 推荐(0)
摘要:##基本介绍 KMP算法是一种用于字符串匹配的算法,网上关于kmp的介绍很多,也十分复杂,(其实我也没怎么搞懂)。首先我们还是考虑朴素的匹配,暴力枚举匹配起点,遇到不匹配的点,就直接退出,进行下一个起始点开始的一轮匹配,这样的复杂度是平方级别的。但是kmp算法考虑的问题是,我们在这样的匹配过程中,会 阅读全文
posted @ 2020-07-02 20:56 Luglucky 阅读(142) 评论(0) 推荐(0)
摘要:##概念相关 (因为前面期末考试的原因很久没有更了,也没有时间写题目了,暑假因为要集训和多校赛的话,会更的比较频繁,逃~)顾名思义,字典树,就是由一个个字符组成的一棵树。我们从根节点出发,在我们面临下一个单词的输入的时候,我们去新建一个节点存放当前的字符序列,ch[p][c]表示的是当前节点是上一个 阅读全文
posted @ 2020-07-02 11:18 Luglucky 阅读(370) 评论(0) 推荐(0)
摘要:##LIS(最长上升子序列) LIS是动态规划里面的一个基础的问题,接下来我们讨论一下它的求法。 ###解一:暴力枚举 我们需要求的是不下降的子序列,所以朴素的想法,当我们面临a[i]的状态,我们可以从a[1]开始枚举元素,每次去判断这个元素是否小于a[i],如果小于那我们就可以更新dp[i]的值为 阅读全文
posted @ 2020-06-12 19:23 Luglucky 阅读(319) 评论(0) 推荐(0)
摘要:#目录 欧几里得算法和扩欧 素数相关算法 快速幂和矩阵快速幂 PART1 欧几里得及其扩展 关于欧几里得相信大家都听说过了,欧几里得算法是求两个数的最大公约数的算法,具体的公式就是gcd(a,b)=gcd(b,a%b),具体证明戳这里,下面给出代码 int gcd (int a,int b) { i 阅读全文
posted @ 2020-06-08 14:08 Luglucky 阅读(487) 评论(0) 推荐(0)