练习与杂项
文章平均质量分 64
练习与杂项
ahardstone
这个作者很懒,什么都没留下…
展开
-
.begin()与.erase()
【代码】.begin()与.erase()原创 2022-10-06 16:41:06 · 313 阅读 · 1 评论 -
关于字符数组清零
字符数组是否有必要初始化清空原创 2022-10-04 15:37:30 · 374 阅读 · 1 评论 -
【二分练习集】(二分查找、二分答案)(5549字)
这里是取中间偏右,这和最后的状态(相邻)有关。l一定是合法的,r可能是合法的,r+1一定是非法的,直到相邻,l是合法的,r是最后一个合法的,然后mid一下出循环,r = l;{}上面那个模板用的比较多。两个都很重要。原创 2022-11-14 23:20:56 · 141 阅读 · 0 评论 -
leetcode 2.两数相加
1、这里最多有一百位的数,即使是unsighned long long也没有办法存下来,所以只能逐位相加,类似于高精度加法。有人相爱,有人也里开车看海,有人leetcode第一题做不出来。2、注意,空指针的错误,一定要先分配内存再用,否则会很痛苦。原创 2022-10-10 18:43:55 · 47 阅读 · 0 评论 -
vscode的python环境准备(写于2022.12.2)(552字)
点击右下角齿轮,点击设置,应用程序,设置同步,点击settings.json。总感觉和网络上的教程有点不一样。加个后缀.py可以换成python图标。将这段代码放到这个位置。原创 2022-12-02 10:38:52 · 206 阅读 · 0 评论 -
【DFS和BFS习题集+分类总结】(更新至2023.1.1)(17788字)
PS:其实用DFS去拆分数效率很低,这里给的范围也很小,实际上,拆分自然数的最好方法,我个人认为的最好方法是【母函数】,许多人说时间复杂度有(n^3)但是实际上通过一般的剪枝复杂度只有(n^2)左右,再加上FFT傅里叶变换,可以更低,不过博主也不会,现在还是一个蒟蒻的ACM预备队员,零基础学起来,相当痛苦,各种OI爷,这是题外话了。存图的目的是,把输入的有向关系,按照相同起点整合到一起,并且将每一个同起点的集合按终点从小到大,有序的整理起来,这样就可以进行搜索了。for循环内部,剔除一些非法的情况。原创 2022-10-29 17:00:46 · 1561 阅读 · 0 评论 -
leetcode 3.无重复字符的最长子串(用时超过98%)
【代码】leetcode 3.无重复字符的最长子串(用时超过98%)原创 2022-10-11 09:55:28 · 75 阅读 · 0 评论 -
【图论习题集】(dijkstra, 匈牙利算法,更新至8873字)
前言:匈牙利算法的本质是DFS,就用那个男女朋友的例子为例,每个女生暗恋一个男生,我们先是假定第一个女生和他暗恋的第一个男生配对,接下来,我们考察第二个女生,如果这个女生也喜欢这个男生,那么我们先考虑第一位女生让步,让她取希望暗恋的第二个男生,如果成功,那么配对的数目自然就加一了,或者没有其他男生的话,只能让第二个女生去喜欢暗恋的第二个男生,一次类推。由于增广路径的正确性,我们得到的每一个都是当前女生数的最大匹配数,这里运用的动态规划的思想。注意:是有向的,我们把起点集合里的第一个点作为起点。原创 2022-11-05 17:04:33 · 656 阅读 · 0 评论 -
【数论相关习题集】(矩阵快速幂,母函数,素数筛法)(更新至8318字)(不定期更新)
为了凑出偶数,如果b是奇数的话,我们先取出一个底数a使得指数变成偶数,这样就可以进行减小运算次数的操作了。一直道所有的数都被取完,也就是指数为0,比如111个a相乘,我们先取一个a,然后扩大底数为a方,相当于两个两个取,次数次数为55,再取一个底数,再扩大。闲聊:博主第一次接触这种类型的题目(虽然久闻大名,而且知道大概想法),这里引用别人的代码(写上自己的注解,并修改部分)。2,PA=B我通过分块矩阵的方法,将原来的矩阵边上放一个n阶的单位矩阵,进行初等行变换,使得A变成B,然后就得到了目标矩阵P。原创 2022-11-08 17:04:38 · 293 阅读 · 0 评论 -
【分类练习与思考】(动态规划和贪心)(11682字)(更新至2023.1.2)
动态规划和贪心感觉有些类似,无非都是求一个最优的状态,利用历史数据。原创 2022-11-11 11:39:14 · 345 阅读 · 0 评论 -
【习题集】(前缀与差分)(2213字)
数据范围很大,暴力显然超时,题目要求我们去求数组三等分的方法数,先进行前缀和处理,得到前缀和数组,问题就转化为,找到i, j其中i < j,3 * sum[i] = total_sum ,3 * sum[j] = total_sum * 2。这样只需要考察对于j前面有多少个i即可,虽然可以再次求前缀和不过没有必要。原创 2022-11-30 19:25:21 · 99 阅读 · 0 评论 -
vscode import torch / pandas报错(2022.12.15)
为了使用vscode的编辑器,先打开anaconda prompt输入命令code .来打开vscode,这样就可以运行了,个人以为这样不是通过第三方打开conda所以可以调用conda的环境里的包,于是OK。窒息痛苦,更改版本也没有用,于是放弃。原创 2022-12-15 20:33:55 · 910 阅读 · 0 评论 -
力扣日记 4. 寻找两个正序数组的中位数
【代码】力扣日记 4. 寻找两个正序数组的中位数。原创 2022-10-11 16:54:42 · 49 阅读 · 0 评论 -
【人话聊算法】Dijkstra算法(第二版)
反证法:如果存在某个在外面的其他中间节点,那么原点到这个节点的距离,这个距离肯定比那个最小点要大,再加上一段未知的距离(正的)肯定比这个大。简单理解: 第一次取点之后,原点扩大了,变成了一个名为S的大原点,相当于原点扩大了一些,把确定的点和原点优化成一个综合的点,直接取最短路径就是正确的。题目类型:题目一般会给出,若干个点到点的距离,让你求出某点到某点的最小的路径。我们想要知道,这些没有标记的点里面的距离最小的点就是下一个进入集合S的点。那么,也就只能从S集合直接到达了,故是下一个S集合的点。原创 2022-10-11 19:23:14 · 504 阅读 · 0 评论 -
leetcode 1.两数之和
4、vector是输出类型,vector& nums是变量,就是一个数组。3、 twosum是希望你写的函数,相当于int main。1、class Solution是用来封装整个函数体的。这是第一题,感觉不是很习惯leetcode的格式。2、pulic是表示某些函数和类都可以访问。原创 2022-10-10 18:48:58 · 62 阅读 · 0 评论 -
【codeforces之路】(简单的数学题)(6367字)(更新至2023.1.17)
求使得数列和为偶数的最小操作次数,如果原来是偶数的话为0,如果是奇数的话,只需要找到最小的改变奇偶性的次数,由于数比较小可以直接暴力枚举解决。这道题的目的是构造出一个数列,使得任取两个数其中较小的可以整除较大的,我们可以想到构造出一个2的等比数列,显然高次的可以被低次的整除。找规律,1是特殊的,10有9个这样的数,100有9个这样的数,得实现。时间2022.12.16,rating:1186。原创 2022-12-16 17:14:29 · 428 阅读 · 0 评论 -
【人话聊算法】DFS与BFS
BFS的特点是广度,通过对邻近的对象进行枚举确定最小关系和Dijkstra算法在某个方面是类似的,是以某个点为中心一圈圈地搜索。搜索的方法,我们从起点开始,探索所有合法的点然后存放到数组里,然后再次访问这些添加过的点,在其基础上探索周围的点,以此类推。DFS可以是void 也可以是int (在记忆化搜索里面)的递归函数,我们在构造DFS的时候要清楚什么是不变的什么是改变的。DFS的特点是深度,DFS的用途十分广泛,在树的遍历,连通性的检查,一些递归(自己调用自己的函数)中也有DFS的思想。原创 2022-10-17 22:11:00 · 84 阅读 · 0 评论 -
【补题日志2022.11.5】 Codeforces Round #832 (Div. 2)
操作都只能对奇数长度的区间进行,偶数如果要操作的话一定要操作两次,我们要从最左端分离出一段异或和为0的区间,因为总的异或和为零,那么剩余的偶数区间,加上个操作后的末端零,就变成了奇数的区间,可以操作,而这个奇数的区间的异或和必然是为零的,异或和无非是不进位加法,各个位数去掉偶数个数仍然是偶数,必定为零。大概思路是,比较两端区间异或和是否为零,其中wee数组是用来存在l和r的关系的,如果输入最左边的发现返回的,值超出范围说明找不到合适的区间,使得两段的异或和都为0;注意循环周期是3,博主写成2,枯了。原创 2022-11-05 12:35:02 · 156 阅读 · 0 评论 -
【Linux学习笔记】(指令的含义)(不定期更新,1284字)
linux的命令的含义,深入理解记忆原创 2022-12-17 20:18:29 · 65 阅读 · 0 评论 -
【ACM札记】(分类练习)(markdown格式)(更新至2023.2.17)(42565字)
这是一篇用来记录一些有意思的题的分类总结。交互题需要我们维护一个数据结构,对数据结构进行修改和查询。树状数组或者线段树,我们首先用树状数组差分维护单个点的操作次数,在查询这个数字的时候再进行操作。对于修改操作是O(nlogn)O(nlogn)O(nlogn)对于查询操作是O(nlogn)O(nlogn)O(nlogn)map的操作O(nlogn)O(nlogn)O(nlogn)并查集跳过区间,利用root数组来维护下一个可操作的数,路径压缩的方法最坏是logn,平摊意义下是常数级别。这原创 2022-12-30 12:13:04 · 542 阅读 · 0 评论 -
【C++/STL一些函数和类、方法】(更新至2023.1.15)(10931字)
然而事情并没有这么简单,如果只写一个的话,就无法开数组也无法开单单独开单个变量。为了便于给结构体变量赋值,我们常常使用构造函数来给结构体初始化。this关键字不可以省略,这样写起来更像一个函数。不过那个括号打的时候比较难受。时间复杂度:O(n),相当于一个for循环。这时候需要写一个空的构造函数。返回值:指向对应类型的指针。时间复杂度:O(n)原创 2022-11-22 20:36:59 · 1039 阅读 · 0 评论 -
【聒絮】什么时候可以用记忆化搜索呢?
dp指的是到达最终点的路径数,终点到终点的路径数确实是1,但是终点旁边的点就不是一的,递推的基础就有问题。,主要原因是,这个点之前的路径的后这个点之后的路径会互相干涉,只有前后各自独立,有一定的优先级才可以使用。第二行为四个正整数 SX,SY,FX,FYSX,SY,FX,FY,SX,SYSX,SY 代表起点坐标,FX,FYFX,FY 代表终点坐标。给定起点坐标和终点坐标,每个方格最多经过一次,问有多少种从起点坐标到终点坐标的方案。第一行为三个正整数 N,M,TN,M,T,分别表示迷宫的长宽和障碍总数。原创 2022-10-19 12:22:36 · 91 阅读 · 0 评论