随笔分类 -  算法

摘要:快速幂就是快速求解一个整数a的n次幂的算法,传统的求解思路是按照线性的求解顺序:an=aaa...a,这样做的算法时间复杂度是O(n),而快速幂借助二进制的思想,可以将时间复杂度降低到O(logn) int quick_pow(int a, int n) { int a 阅读全文
posted @ 2021-02-16 14:09 VanHope 阅读(62) 评论(0) 推荐(0) 编辑
摘要:1 基本性质 (a+b)%p=(a%p+b%p)%p (ab)%p=(a%pb%p)%p (ab)%p=(a%pb%p)%p (ab)%p=((a%p)b)%p 除法不满足,但是根据费马小 阅读全文
posted @ 2021-02-14 12:35 VanHope 阅读(555) 评论(0) 推荐(0) 编辑
摘要:转载于:https://www.jianshu.com/p/452c1a5acd31 对于整数的取模运算,想必大家已经比较熟悉了,譬如说 7 对 3 取模,结果是多少,我们可以按照小学的公式:被除数÷除数=商……余数 来推算: 7 ÷ 3 = 2 ...... 1 那么结果是 1。 对于正整数来说, 阅读全文
posted @ 2021-02-14 12:27 VanHope 阅读(1197) 评论(0) 推荐(0) 编辑
摘要:一、自定义比较函数 #include <iostream> #include <algorithm> using namespace std; struct Node{ string name; int age; }; bool cmp(const Node a, const Node b) { r 阅读全文
posted @ 2021-01-23 15:28 VanHope 阅读(776) 评论(0) 推荐(0) 编辑
摘要:一、Description 原题链接 和poj1088同样的题目 【题目描述】 benben喜欢滑雪。(以下简叙)在一个RC(R,C100)的整数矩阵上找一条高度严格递减的最长路。起点任意,但每次只能沿着上下左右4个方向之一走一格,并且不能走出矩阵外。如图所示,最长路是按照高度25,2 阅读全文
posted @ 2021-01-23 15:02 VanHope 阅读(145) 评论(0) 推荐(0) 编辑
摘要:力扣115:不同的子序列 https://leetcode-cn.com/problems/distinct-subsequences/ 题解: AC代码 class Solution { public: int numDistinct(string s, string t) { int sl = 阅读全文
posted @ 2020-12-27 15:18 VanHope 阅读(85) 评论(0) 推荐(0) 编辑
摘要:部分背包问题、Huffman编码、活动选择 提出贪心策略:观察问题特征,构造贪心选择 证明策略正确:假设最优方案,通过替换证明 1 部分背包 按性价比大小从小到大排序,先选择性价比高的物品; def F_Knapsack(n,p,v,C) { 把所有物品按照价值/体积的比升序; //排序时间复杂度n 阅读全文
posted @ 2020-12-27 15:10 VanHope 阅读(82) 评论(0) 推荐(0) 编辑
摘要:图算法 1 BFS def BFS(G<V,E>, s) { 新建:队列Q 前驱数组 pred[] 距离数组 dist[] 颜色数组 celor[] // 初始化 for(u in V) { color[u] = white; pred[u] = NULL; dist[u] = INF; } col 阅读全文
posted @ 2020-12-27 14:28 VanHope 阅读(88) 评论(0) 推荐(0) 编辑
摘要:0-1背包问题、最大连续子数组问题、最长公共子序列、最长公共子串、最小编辑距离、钢条切割、矩阵链乘 0-1背包问题、最大连续子数组问题、最长公共子序列、最长公共子串、最小编辑距离、钢条切割、矩阵链乘 动态规划问题的一般步骤: 给出问题的表示,明确子问题 分析最优结构,构造递推公式 确定计算顺序,依次 阅读全文
posted @ 2020-12-26 15:59 VanHope 阅读(206) 评论(0) 推荐(0) 编辑
摘要:侧重于分解:快速排序、次序选择 侧重于合并:归并排序、逆序计数、最大子数组 最大子数组问题 GetAcross(A, left, mid, right) { // mid左边 s_left = -INF, sum = 0; for(i=mid to left) { sum += A[i]; if ( 阅读全文
posted @ 2020-12-26 09:41 VanHope 阅读(98) 评论(0) 推荐(0) 编辑
摘要:​ 本题的一个重要转化是:将每小岛的位置转换成一个线段,然后求能够使得每个线段上都有一个点的情况下,需要的点的最小个数。因为有重叠部分的线段只需要一个点就可以,所以重点在于求线段的交集。 ​ 对于一组线段组成的集合,当且仅当 这个集合中最大的左端点小于最小的右端点的时候,这一组线段集合才会都重叠。 阅读全文
posted @ 2020-11-21 22:23 VanHope 阅读(107) 评论(0) 推荐(0) 编辑
摘要:贪心策略: 情况一: ​ 如果最大的电池寿命大于其他所有的电池寿命之和,ans为其他所有的之和 情况二: ​ 如果最大的电池寿命小于其他所有电池寿命之和 ,ans为所有电池寿命的一半 情况一很容易证明,比如电池寿命分别为:a1,a2,a3,...,an, 如果$a_n > 阅读全文
posted @ 2020-11-21 15:23 VanHope 阅读(352) 评论(0) 推荐(0) 编辑
摘要:贪心算法——部分背包问题 贪心策略的一般步骤: 提出贪心策略:观察问题特征,构造贪心选择 证明策略正确:假设最优方案,通过替换证明(交换论证法或者数学归纳法) 一、部分背包的形式化定义 贪心策略:最高性价比优先。 先按单位质量的价值从大到小排序,然后尽可能装入单位价值大的物品。 贪心策略正确性证明: 阅读全文
posted @ 2020-11-16 17:42 VanHope 阅读(257) 评论(0) 推荐(0) 编辑
摘要:动态规划 阅读全文
posted @ 2020-10-29 18:02 VanHope 阅读(39) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示