摘要: 状压DP解决TSP问题 阅读全文
posted @ 2022-04-08 10:29 小呆瓜瓜 阅读(267) 评论(0) 推荐(0) 编辑
摘要: 图的最短路径问题 详细分解版 1.图的最短路径问题分类 2.单源最短路问题 2.1边权值都是正数情况 2.1.1 朴素Dijstra算法 算法思想:每次从未被确定最短距离的结点中找出距离起点最小值的结点,加入集合s中,并用该结点更新其他未被确定最短路径值得结点路径。直到最终全部节点的最短路径值都计算 阅读全文
posted @ 2022-06-10 22:44 小呆瓜瓜 阅读(658) 评论(1) 推荐(2) 编辑
摘要: c++ 超大整数除法 高精度除法 解题思路 计算a/b,其中a为大整数,b为普通整数,商为c,余数为r。 根据手算除法的规则,上一步的余数记为r,则本次计算的被除数为t=r*10+被除数的本位数值a[i],商t/b,本步余数为t%b 除法是从最高位开始计算的,所以需要反转reverse一下,才能保持 阅读全文
posted @ 2022-05-21 15:37 小呆瓜瓜 阅读(907) 评论(0) 推荐(1) 编辑
摘要: c++ 超长整数乘法 高精度乘法 解题思路 参考加法和减法解题思路 乘法不是一位一位的按照手算的方式进行计算,而是用循环用一个数的某一位去乘另外一个数 打卡代码 #include<bits/stdc++.h> using namespace std; vector<int> mul(vector<i 阅读全文
posted @ 2022-05-21 11:35 小呆瓜瓜 阅读(121) 评论(0) 推荐(1) 编辑
摘要: c++ 超长整数减法 高精度减法 实现思路 和加法类似,设置临时变量记录借位 当对应位数相减得到的结果大于等于0时,该位数字为本身值,否则需要加上借位的10。则$t=(t+10)%10$ 打卡代码 #include<bits/stdc++.h> using namespace std; bool c 阅读全文
posted @ 2022-05-21 10:53 小呆瓜瓜 阅读(174) 评论(0) 推荐(0) 编辑
摘要: c++ 超长整数加法 高精度加法 实现思路 不能直接使用加法,因为int和long long都已超出最大数据表示范围 数据读入采用string类型,读入后将数据的每一位存储到vector中 vector存储时数字的高位要存在vector的末尾,因为这样如果有进位,可以快速push_back stri 阅读全文
posted @ 2022-05-21 09:21 小呆瓜瓜 阅读(241) 评论(0) 推荐(0) 编辑
摘要: 求一个数的三次方根 实数二分 方法一: 调用库函数pow res=pow(x,1.0/3); 使用这个函数时,当x为负数时,输出为nan,原因是负数的立方根还有复数,而c++不能表示复数 方法二: 二分 double l,r; while(r - l > 1e-8){ double mid = (l 阅读全文
posted @ 2022-05-20 20:48 小呆瓜瓜 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 数的范围——整数二分 题目描述 给定一个按照升序排列的长度为 n 的整数数组,以及 q 个查询。 对于每个查询,返回一个元素 k 的起始位置和终止位置(位置从 0 开始计数)。 如果数组中不存在该元素,则返回 -1 -1。 输入格式 第一行包含整数 n 和 q,表示数组长度和询问个数。 第二行包含 阅读全文
posted @ 2022-05-20 11:08 小呆瓜瓜 阅读(26) 评论(0) 推荐(0) 编辑
摘要: 逆序对个数求解 题目描述 给定一个长度为 n 的整数数列,请你计算数列中的逆序对的数量。 逆序对的定义如下:对于数列的第 i 个和第 j 个元素,如果满足 i<j 且 a[i]>a[j],则其为一个逆序对;否则不是。 输入格式 第一行包含整数 n,表示数列的长度。 第二行包含 n 个整数,表示整个数 阅读全文
posted @ 2022-05-20 09:27 小呆瓜瓜 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 归并排序 算法分析 空间效率:\(O(n)\) 时间效率:$每趟归并时间复杂度为O(n),共需 log_{2}n 趟,时间复杂度为n*log_{2}n $ 稳定性:稳定 模板 #include<bits/stdc++.h> using namespace std; int n; const int 阅读全文
posted @ 2022-05-15 21:45 小呆瓜瓜 阅读(15) 评论(0) 推荐(0) 编辑
摘要: 快速选择 第k个数 题目描述 给定一个序列,求第k小的数 算法思想 利用快速排序思想,算法复杂度能达到O(n)步骤如下: 1.找到排序分界点x,这里选择区间最左值 2.排序,让左边的值都小于x,右边都大于x 3.递归排序寻找数字,如果左区间数字数目大于k,直接在左边找第k小的数字,如果左区间数字数目 阅读全文
posted @ 2022-05-15 19:44 小呆瓜瓜 阅读(28) 评论(0) 推荐(0) 编辑