- 博客(14)
- 收藏
- 关注
原创 证明由AB=E得,BA=E
前言相信好多小伙伴在看到矩阵的逆的定义时都会有个小疑惑,为什么只需要证明AB=E,则就可以说明B是A的逆,而无需再证BA,这里给出个小证明。由AB=EAB=EAB=E得:∑k=1naikbkj=\sum_{k=1}^{n}a_{ik}b_{kj}=k=1∑naikbkj=参考https://www.zhihu.com/question/67232467/answer/1553157064?utm_source=wechat_session&utm_medium=social&am
2021-12-31 18:24:11
4495
原创 leetcode 402 321 316
402 移掉k个数字结合官方题解看下面的思路算法的核心原理是贪心算法,可以思考一下当执行到删k-1步得到最小时值时,如何采取下一步策略能够得到删k的最优解,并利用替换的思想作证明**具体为:**假设一个最优解删除的元素位置为p1,p2,..,pk−1,pkp_1,p_2,..,p_{k-1},p_kp1,p2,..,pk−1,pk, 设删掉p1,p2,..,pk−1p_1,p_2,..,p_{k-1}p1,p2,..,pk−1位置后的序列为x,则下一步a.删除x中不符合升序的第一个元
2021-04-23 00:48:05
144
原创 数据结构之单调栈
c++模板stack<int> st;for(int i = 0; i < nums.size(); i++){ while(!st.empty() && st.top() >= nums[i]) { st.pop(); } st.push(nums[i]);}
2021-04-19 23:53:07
294
原创 括号位置搜寻与字符串反转
问题:给定字符串,按照括号的优先级对字符串进行反转,输出最后不带括号版本的序列比如:输入:(ab(love)cd)输出:dcloveba解释:先反转love得到:(abevolcd)继续反转得:dcloveba#include<bits/stdc++.h>using namespace std;//v1笨。。void helper(string& input, int l, int r) { int left,count = 0; //在区
2021-04-17 18:47:26
358
原创 关于牛客网的标准输入输出(c++版)及while(cin>>x)的解释
前言刚接触牛客的OJ(Online Judge)编程,吃了不少亏,故此写下此小短文。OJ判分原理牛客的oj判分系统采用的是标准文件输入/输出,也就是说你先编程读取键盘的输入(这里oj系统会把输入文件映射到键盘输入区用以模拟键盘输入),接着你要编程按照一定的输出格式将结果输出到屏幕终端(与输入类似,oj系统会把你编程输出到屏幕终端的内容写入到一个文件中),最后通过对比你写的文件和oj系统预先存入文件的结果,看你的答案与预先输入的答案有多少是一致的,比如完全相同,则表示你成功通过了所有测试,即ac100%
2021-04-01 20:30:21
1387
原创 背包问题的抽象形式
0-1背包抽象 :有N个事物,每个事物n有价值量v和消耗c(c可以是多维的,比如卡车载物,一件物品既消耗体积又消耗载重),在不能重复选择的前提下(即事物最多被选择一次),问如何选择事物能使最后的价值量总和最大。状态转移方程为:其中,dp[i][c1..cn]dp[i][c_1..c_n]dp[i][c1..cn] 表示包含i件事物的,在消耗限制条件为c1..cnc_1..c_nc1..cn下的最优解,c1−..cn−c_1^-..c_n^-c1−..cn−表示将第i件事物考虑在内后,余
2021-03-21 21:25:42
129
原创 证明: 若$q=m$ 或 $q \neq m$ 但$P[q+1] \neq a$ ,则$\sigma(P_qa) = \sigma(P_{\pi[q]}a)$
证明: 若q=mq=mq=m 或 q≠mq \neq mq=m 但P[q+1]≠aP[q+1] \neq aP[q+1]=a ,则σ(Pqa)=σ(Pπ[q]a)\sigma(P_qa) = \sigma(P_{\pi[q]}a)σ(Pqa)=σ(Pπ[q]a)对于σ(Pqa)\sigma(P_qa)σ(Pqa),可以将它转化为如下问题:设A={k∣k<q , Pk⊐Pq}A=\{ k \mid k<q \, , \, P_k \sqsupset P_q\}A={k∣k&
2021-03-17 23:09:20
127
原创 DFS&BFS范式
DFS伪代码顶点入栈对顶点作入栈标记防止其二次入栈while 栈非空 访问栈顶p pop 栈顶p for q 为 p 的邻接结点 q 入栈 对q作入栈标记防止其二次入栈广度优先与深度优先在实现上十分类似,只需要把栈换成队列即可DFS伪代码顶点入队对顶点作入队标记防止其二次入队while 队非空 访问队头p pop 队头p for q 为 p 的邻接结点 q 入队 对q作入队标记防止其二次入队...
2021-03-11 11:16:50
195
原创 c++二分查找模板
一、查找已排数组A中 大于等于(或者大于) 给定target的 第一个 元素//当eq_enable为false时 对应【大于】的情况//当eq_enable为true时 对应【大于等于】的情况int binarySearch_GE_or_G(vector<int>& A, int target, bool eq_enable) { int left = 0, right = (int)A.size() - 1, ans = (int)A.size();
2021-03-02 23:20:35
203
原创 Floyd判圈法
在开始正式算法之前,先看看几个示例作铺垫。示例一:给定一个环,当两个箭头同时逆时针加1时,它们的相对距离不会发生变化(在这个例子中,即维持4个点的相对距离)。给定同样的环,若在每次更新时,蓝色箭头逆时针加2,而红色箭头逆时针加1,那么它们的相对距离就会在本次更新结束后缩短1,因此可以推导出,经过若干次更新后,红蓝箭头将会重合在同一个位置(即它们的相对距离为0)示例二:给定一个没有环的单向链表,如果每次更新时,蓝色箭头向右加2而红色箭头向右加1,则在任意一个时刻都有:蓝色箭头走过的总步长为红
2021-02-28 17:29:19
513
2
原创 KMP字符串匹配算法笔记
定义偏移(shift)为:匹配的的字符串位置前存在的字符数给定一个模式PPP,定义:σ(x)=argmaxk{k∣Pk⊐x}\sigma(x)=arg\max_{k} \{k \mid P_k \sqsupset x \}σ(x)=argkmax{k∣Pk⊐x}π[q]=argmaxk{k∣k<q,Pk⊐Pq}\pi[q]=arg\max_{k} \{k \mid k<q, P_k \sqsupset P_{q}\}π[q]=argkmax{k∣k<
2021-02-21 16:04:03
58
原创 纯公式版RNN前向过程
普通RNN (Recurrent Neural Network)输入: xtx_txt循环层: ht=f(Wxhxt+Whhht−1+bh)h_{t}=f\left(W_{x h} x_{t}+W_{h h} h_{t-1}+b_{h}\right)ht=f(Wxhxt+Whhht−1+bh)输出: yt=g(Woht+bo)y_{t}=g\left(W_{\mathrm{o}} h_{t}+b_{\mathrm{o}}\right)y
2020-09-14 19:38:22
177
原创 0-1背包问题(0-1 knapsack problem)c++实现
问题描述有n个物品,它们有各自的重量和价值,现有给定最大载重的背包,如何让背包里装入的物品具有最大的价值总和?比如:基本原理定义数组A[0…n][0…maxWeight]其中,n表示商品的总数,maxWeight表示背包的最大载重量。用A[i][w]的含义为包含前i件商品且最大载重为w时的子问题的最优方案的总价值。只需要讨论当前商品i是否可能在当前子问题的最优方案中便可以得到以下递推式:若 weigth[i] > w, 即当前商品i太重了,故不可能出现在当前子问题的最优方案里,因此
2020-08-30 22:54:52
705
原创 二叉搜索树(Binary Search Trees)《算法导论》笔记
文章目录12.1 什么是二叉搜索树12.2 查询二叉搜索树查找最大关键字元素和最小关键字元素后继与前驱12.1 什么是二叉搜索树二叉搜索树是以一颗二叉树为原型加上某些约束而创建的一颗树,如下图所示:每个节点除了key和卫星数据外,还包含属性left、right、p,它们分别指向左子结点、右子结点、父结点。如果某个结点的子结点或者父结点不存在,则将相应的属性的值设为NIL。根结点(从上往下数第一个结点)是树中唯一的父指针为NIL的结点。二叉搜索树中的key值必须满足以下约束:设x是二叉搜索树中的某个
2020-08-26 23:31:00
837
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人