自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(75)
  • 收藏
  • 关注

原创 【算法竞赛进阶指南】141.周期 题解 KMP 最小循环节

可以从几乎任意位置开始,只要字符串的长度足够长以支持所描述的周期 (如果不支持,那么表示从j开始的后续部分无法使用T’进行重复构成,这样的情况则不需要讨论。上面的1就是下面的1(完全相同的部分),而下面的1等于上面的2(前后缀匹配),上面的2等于下面的2,而下面的2等于上面的3…反证: 假设原串存在一个子串T’,它不是最短循环节,也不是最短循环节的循环构成(倍数),但是可以循环构成原串。所以假设是错误的,也就是说,T确实是最短循环节。所以上面的1,2,3,4,5和下面的1,2,3,4,5完全相同。

2023-05-30 16:36:32 895

原创 计算机视觉的深度学习 Lecture15:Object Detection 笔记 EECS 498.007/008

RCNN解决方案:区域选择:使用proposal method预先搜索图片上目标的“可能区域”(或者叫ROI)(不是滑动窗口的box),之后可以在“可能区域”上做图像分类+检测(RCNN)卷积之后的一个grid对应于一个指定大小的Anchor box,这个gird经过RPN可以预测他对应的Anchor是否存在一个目标(object)、是一个二分类问题。基于Region,就是在启发式方法搜得的部分区域中(ROI)进行分类,并且还会做一个变换–在一个ROI中检测出的框子可以偏离原ROI的中心坐标、修改框子大小。

2023-05-13 21:22:00 507 1

原创 计算机视觉的深度学习 Lecture4:Regularization + Optimization 笔记 EECS 498.008

SGD通过每次抽取一部分(mini-batch)来计算梯度,而不是遍历整个数据集来求梯度,大大增大了求梯度速度,并且性能不怎么受影响。AdaGrad在梯度大时步子变小,梯度小时步子变大。注意这个等价是全过程等价,如果只挑选其中一步是不同的。概率视角:通过随机抽样mini-batch求出的梯度,在期望上等于用全部样本计算的梯度。Nesterov看下一步的走向,动量下降看当前走向,区别不大;、等高线图,也就是垂直方向梯度变化大,水平方向梯度变换缓。现在我们可以看到,两个更新式子在数学上是等价的。

2023-05-13 12:47:10 529

原创 计算机视觉的深度学习 Lecture5:Neural Networks 笔记 EECS 498.008

事先思考一下loss的可能值有助于debug。如果W随机为高斯分布,μ为0.001,那么下面sj-syi就会很小,Li的值接近C-1,C为分类数。所以如果写在C10上的线性分类器,一开始的单类loss不在2.3附近,很可能代码有bug。,在CIFAR10上有十类,所以平均来看Li约等于log(10) = 2.3。如果score都是随机很小的数,近似意义上最后每一个类得到的。所以一开始能估计出loss的大概值是很有用的。注意到每一行完成一类的分类。

2023-05-12 00:27:06 341

原创 计算机视觉的深度学习 Lecture4:Optimization 笔记 EECS 498.008

通过每次抽取一部分(mini-batch)来计算梯度,而不是遍历整个数据集来求梯度,大大增大了求梯度速度,并且性能不怎么受影响。AdaGrad在梯度大时步子变小,梯度小时步子变大。注意这个等价是全过程等价,如果只挑选其中一步是不同的。概率视角:通过随机抽样mini-batch求出的梯度,在期望上等于用全部样本计算的梯度。Nesterov看下一步的走向,动量下降看当前走向,区别不大;、等高线图,也就是垂直方向梯度变化大,水平方向梯度变换缓。现在我们可以看到,两个更新式子在数学上是等价的。

2023-05-12 00:27:04 261

原创 计算机视觉的深度学习 Lecture2 笔记 EECS 498.008

要对图上的蓝点进行分类,每多一个维度,所需要样本量就要翻几倍,指数增长之后没办法收集到如此多的数据。学过数学分析的会给出一堆不能拟合的奇奇怪怪的函数。不过这样可能会导致最后才发现算法的效果不好。),这根本不可能,而且这还是非常小的数据。的灰度图像,就需要数据集达到极大的数量来训练

2023-05-12 00:24:56 383

原创 后缀树组 哈希+二分做法

后缀数组题目:用哈希和二分构建后缀数组。

2023-05-10 17:51:07 553

原创 回文子串的最大长度 nlogn

回文子串模板题,使用字符串哈希和二分,达到更优的O(nlogn)

2023-05-10 17:39:41 792

原创 配置默认python环境而非conda base环境

如何配置powershell,使得输入jupyte notebook打开的是默认的C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64里面的python,而非anaconda的默认base环境里的python?要在PowerShell中启动特定Python环境下的Jupyter Notebook,而不是Anaconda base环境下的Jupyter Notebook,你需要调整系统的环境变量。点击"确定"按钮,关闭所有对话框。

2023-04-30 09:11:07 1148 1

原创 递归实现组合型枚举 最快速度

【代码】递归实现组合型枚举 最快速度。

2023-04-05 09:58:02 69

原创 双端队列 题解

对所有的数处理完成之后,达达将这些队列按一定的顺序连接起来后就可以得到一个非降的序列。1.新建一个双端队列,并将当前数作为这个队列中的唯一的数;2.将当前数放入已有的队列的头之前或者尾之后。输出一个整数,代表最少需要的双端队列数。达达手头能用的工具就是若干个双端队列。达达现在碰到了一个棘手的问题,有。请你求出最少需要多少个双端序列。行,每行包括一个整数。,代表所需处理的整数。

2023-04-05 09:56:50 226

原创 C++手写stack容易犯的错误

【代码】C++手写stack容易犯的错误。

2023-04-05 09:55:40 117

原创 assert Debug技巧

如果条件表达式结果为0或false则程序中断,并且报错信息中告诉你哪一行出错。

2023-04-05 09:54:50 92

原创 快读快写模板 (缓冲区)

快读快写:在一些算法题中输入输出的数据可能达到10^7的范围,此时用scanf和printf的时间将大大超过一秒,此时需要使用快速读入和快速输出的方法(下文简称快读快写)。即使输入输出数据量中等,使用快读和快写也可以延长程序的计算时间,如果写的是暴力算法就可能能过更多的点。

2023-01-16 19:56:16 422

原创 【基数排序】 C++高效实现

网上搜索基数排序C++,大多都是非常低效的实现,于是自己动手实现一个速度较快的版本。进制下,每次取个位和十位需要用除法和模运算,为了规避除法和模运算,采用。数据快排需要850ms,而本文章给出的基数排序只需要180ms。注意提前在文件夹下建立in.txt与out.txt。请你使用快速排序对这个数列按照从小到大进行排序。实际测试比快速排序略快(数据量。并将排好序的数列按顺序输出。输入共两行,第一行包含整数。个整数,表示排好序的数列。范围内),表示整个数列。个整数(所有整数均在。基数排序原理:一图胜千言。

2023-01-13 23:01:30 629

原创 打包注意1

加这四个东西,然后把weights,yolov5,qss放入

2022-05-13 17:50:19 187

原创 pytorch版本对应

python3.7 + cuda11.3 + torch0.11.3-gpu-cp37 + torchvision0.12.0-gpu-cp37 是我目前跑下来没什么问题的版本。如果要采用pip安装可以用 torch_stable下载到本地再安装

2022-05-08 18:32:31 1652

原创 win10已有conda环境下,在非conda环境pip安装包

如图,下方是conda环境的变量,其中有一条E:Software\anaconda\Scripts 这个就是说这个路径下的文件可以用于cmd调用。如pip就在里面。所以如果你想用pip安装包到非conda环境,用的是这pip的化,只会装到conda环境里面。所以我在上面加了一条Python37_64\Scripts, 这样就是这个python环境更优先,不激活conda环境下就可以直接撞到这个python环境下。...

2022-05-08 17:53:10 1240

原创 Win10 安装pytorch-gpu版本的坑

用官网指令安装torch是cpu版本的.可以用torch.__version__查看,是1.xx+cpu. 如果要安装GPU的去这个里面找对应版本. 这里我用的是cu113/torch-1.10.2%2Bcu113-cp36-cp36m-win_amd64.whl这个,torch1.10,2,cuda11.3注意cp指的是python版本.另外如果之前有装过cuda的其他版本,再次安装不会覆盖.如果测试nvcc -V 还是老版本,删除老版本的cuda的环境变量就可以....

2022-04-22 19:58:43 1989

原创 【Leetcode】440. 字典序的第K小数字 题解 详细描述 C++

440. 字典序的第K小数字 - 力扣(LeetCode) (leetcode-cn.com)思路构建数字字典树:可以在nnn的范围内建出这个字典树。找K小数,考虑朴素算法:深搜从上到下,从左到右,一个一个搜,搜KKK次找到的就是KKK小数。如n=109,k=103n = 109,k = 103n=109,k=103, 那么找到路线就是1-10-100-101-102-103​。这个做法复杂度显然是O(K)O(K)O(K)的,数据范围在1e91e91e9会超时,所以考虑优化:由于该树除了包含nnn

2022-03-23 20:27:03 1761

原创 【线段树】基础原理图解,建树,应用

线段树建树方式将一个区间每次分半,作为节点,连接成树。注意将l+r>>1l + r >> 1l+r>>1节点划分到左子节点,也就是奇数长度区间的中点划分到左子节点。这个除了最后一层是满二叉树,故用类似堆的形式存储,也就是关于堆详细请看手写堆/交换堆。注意2x=x<<1,2x+1=x<<1∣12x = x << 1,2x + 1 = x << 1 | 12x=x<<1,2x+1=x<<1∣1

2022-03-14 23:38:05 324

原创 差分约束原理 例题:区间

差分约束是用最短路算法解决两种问题1.求不等式组可行解2.求可行解中所有解最大值或最小值2.有两种意思,总共的最值和单个解的最值。在差分约数问题中单个最优就能导出全局最优,下面会证明。差分约束能解决如下形如下方的不等式组形式全部都是xi <= xj + ck的形式(或 >=)对于一个已经计算好最短路的图,满足三角不等式,如下有对应关系建立变量和点的对应关系,到一个点的最短距离就是一个变量的可行解。求不等式组可行解需要满足条件 :源点要满足从源点出发,一定可以走到到所有的边 (

2022-02-27 16:39:27 275

原创 01分数规划 观光奶牛

01分数规划的题目通常长这样本质上是在求∑fi∑ti\frac{\sum{f_i}}{\sum{t_i}}∑ti​∑fi​​的最大值,这类分数求最大、最小的问题被成为01分数规划问题。01分数规划求最大值通常使用二分,二分的范围要看题目,对于本题 ∑环点权∑环边权\frac{\sum{环点权}}{\sum{环边权}}∑环边权∑环点权​ 的范围为(0,1000](0, 1000](0,1000]于是问题可以转化 $\frac{\sum{f_i}}{\sum{t_i}},,\overset{?}{&g

2022-02-27 15:49:42 151

原创 spfa判负环

spfa 判负环基于抽屉原理,如果一条正在搜索的最短路径上的点的个数大于总共点的个数,则说明路径上一定有至少重复的两个点,走了回头路。又因为满足最短路径的性质,所以一定存在负环。可以处理负权边的最短路算法就可以找环。通常用spfa,记录每个点的cnt,当cnt >= 点的个数说明有负环。一个不稳定优化:仅仅找负环时,将spfa用的队列换成栈可能会加速。因为用栈的spfa搜索类似于深搜,在环上更容易一次把环跑完,所以更容易搜到负环。另,找负环不需要初始化dist数组,因为只要有负环,某个点的距

2022-02-27 15:15:36 493 1

原创 数组输出一行后自动换行技巧

支持c++11的编译器都可以这样写for(int i = 0; i < n; ++ i){ cout << a[i] << " \n"[i == n - 1];}这样数组的每个元素之间有空格,最后会有换行,不需要手动添加cout << endl了。是不是很神奇?原理是" \n"在这里可以看成一个const char数组,由空格,换行符和\0组成。[]看成是按下标取,i!= n - 1时访问第一位空格,等于时输出换行符。看懂点个赞吧...

2022-02-21 21:52:11 1537

原创 次小生成树问题——秘密的牛奶运输

题目描述算法本题是一个裸的严格次小生成树问题。所谓严格就是该次小生成树的总边权严格大于最小生成树(以下用MGT称呼)。非严格的就是边权和MGT相同算法1:自然的想先求MGT,再每次删去MGT中的一条边,在该图上做MGT求解(新图的MGT就是原图的次小生成树)。做一遍kruskal后面就不用再排序了,删边次数n - 1,每次求MGT是m,故 O(mlogm+nm)O(mlogm + nm)O(mlogm+nm)。这种方法求不出 严格次小生成树,因为如果有非严格次小生成树,删边之后再找肯定会找到非

2022-02-19 22:33:39 558

原创 64位系统 C++ double最大值

在1e308左右

2022-02-13 16:13:26 983

原创 BFS进阶技巧——多源BFS、最小步数模型、双端队列广搜、双向广搜

多源BFS多源BFS时有从多个源点出发的bfs算法,只需要将多个源点都连一条边权为0的边到虚拟源点,那么问题就等价于从虚拟源点开始BFS。一开始直接将所有源点加入BFS的队列即可.矩阵距离 输入样例:3 4000100110110输出样例:3 2 1 02 1 0 01 0 0 1思路题意为搜索所有0点到一群1点的最短曼哈顿距离。将所有为1的点直接加入bfs队列,向外搜索,由bfs性质到达的点一定离虚拟源点最短,而到虚拟源点的距离 == 到1点的距离,故最短。代码/*

2022-01-31 23:10:05 1540

原创 最大异或和——广义前缀和的应用 Trie树

最大异或和给定一个非负整数数列 a,初始长度为 N。请在所有长度不超过 M 的连续子数组中,找出子数组异或和的最大值。子数组的异或和即为子数组中所有元素按位异或得到的结果。注意:子数组可以为空。输入格式第一行包含两个整数 N,M。第二行包含 N 个整数,其中第 i 个为 ai。输出格式输出可以得到的子数组异或和的最大值。数据范围对于 20% 的数据,1≤M≤N≤100对于 50% 的数据,1≤M≤N≤1000对于 100% 的数据,1≤M≤N≤105,0≤ai≤231−1输入样

2022-01-31 20:05:07 2157

原创 DFS进阶技巧--迭代加深,IDA*和双向DFS

文章目录1.迭代加深AdditionChains2.IDA*BooksortTheRotationGame3.双向DFS送礼物1.迭代加深深度优先搜索每次选定一个分支,不断深入直到递归边界才回溯.当搜索树的分支特别多,但答案处于较浅层的节点上,就会导致浪费许多时间.所以我们通过指定搜索的最大深度,逐步加深,保证递归层数不大.这种方法确实会重复搜索浅层节点,但是前n−1n - 1n−1层的节点数量之和在最坏情况下等于第nnn层节点数 - 1(满二叉树),分支增多则小于最后一层节点数,故总数量级仍为最

2022-01-31 12:23:57 1161

原创 BFS基础应用--6道题

0.bfs的定义和性质bfs,译为中文是广度优先搜索,在图结构中从起点开始优先搜索直接相连的点,将这些点加入队列,再搜索这些点直接相连的点,以此过程重复。普通bfs可以用来求边权为1的图上的最短路(特殊的可以求边权<=0,下文会说),或某种带有变换性质的图、通过变换到达指定状态的最小步数。第二种情况的图如果满足群的性质那就是一个群(废话),那么此时bfs就在cayley图上搜索。1.基础应用1.1 Flood Fill 算法Flood Fill很简单,就是利用bfs的过程对连通块进行操作

2022-01-31 01:01:14 854

原创 C++快速读入/快速输出/文件读入读

1.快读快输输入,用自己写的getc,比getchar还要快.输出,用char数组建立一个2212^{21}221空间的缓冲区.这个量级在1e8以上,一个题目输出不会超过这么多,足够用所有的输出全部打入char数组,最后输出时一次性写入标准读入.大数据输出时速度比printf快几倍#include <cctype>#include <cstdio>#include <ctime>#include <iostream>using namespac

2021-07-05 14:35:36 3070 1

原创 word 指定字符+任意字符 删除

删除 正确答案+任意多个字符+换行符

2021-07-01 17:17:45 1712

原创 两个常用最小生成树算法

Kruskal思路对边从小到大排序,使用并查集逐个连接边所对应的两个点,如果还不在集合里就连接,在集合里就不需要再次连了,最后并查集里的点就对应最小生成树的点。正确性最小生成树里有最小边权覆盖所有点的边,由于我们连接时按照从小到大的顺序相连,那么两个点连接的一定是最短的那条边,所以就是最小生成树代码/* * @Author: ACCXavier * @Date: 2021-05-13 21:43:18 * @LastEditTime: 2021-05-13 22:14:27 * Bili

2021-06-27 10:31:57 133

原创 FHQ Treap 详解

0.简单介绍FHQ Treap,以下简写为fhq,是一种treap(树堆)的变体,功能比treap强大,代码比splay好写,易于理解,常数稍大.fhq不需要通过一般平衡树的左右旋转来保持平衡,而是通过分裂(split)和合并(merge)来实现操作.本文力求简明易懂,在看本文前最好先了解过一种平衡树的基本写法,否则代码部分有可能看不懂.1. 基本操作结构以结构体作为树的每一个节点,存储左子树和右子树的位置,权值,堆权值,和子树大小.struct Node { int l, r;

2021-06-21 10:47:35 5050 7

原创 数论算法_线性筛_原理解释及其C++实现

线性筛在O(n)O(n)O(n)]时间内得到素数表的一种算法实现原理:用int primes[]记录素数,st[i]记录i是否为素数每一个数字只会被最小质因子筛掉,对于n而言最小质因子一定出现在⩽n\leqslant \sqrt{\mathrm{n}}⩽n​的范围内可以用均摊分析的方法来分析算法的复杂度,由于每个合数都唯一的被它的最小素因子筛一次,而每个合数的最小素因子都是唯一的,总复杂度是O(n)O(n)O(n)注意,每次筛的都是primes[j]*i代码:#include <b

2021-06-14 16:31:07 243

原创 01背包/完全背包/多重背包-优化/分组背包整理

01背包f[i,j]表示前i件物品,体积不超过j的最大价值每件物品一个转移方程由于i状态转移只用到f[i-1],故优化掉第一维,具体来说计算f[j]的时候要有上层f[j-v],由于去掉第一维度后本身就是上一层的值,所以需要逆序遍历,保证j-v是上层的j-v./* * @Author: ACCXavier * @Date: 2021-04-25 19:57:50 * @LastEditTime: 2021-05-24 11:54:01 * Bilibili:https://space.bi

2021-05-24 12:38:07 160

原创 最长上升子序列nlogn写法

思路和方法普通做法最长上升子序列dp求法:f[i] = max(f[k]+1,f[i]),此时f[i]表示以i结尾的上升子序列的最大长度优化做法现在考虑长度为1的子序列,3和1如果后续子序列能接到3的后面则一定能接到1的后面,故3这个子序列就不用存,因为能接在3后面一定能接在1后面,故对于长度1的子序列只需要存结尾值最小的.以此类推所有长度的子序列只需要存结尾长度最小的即可.我们存f[i]表示长度为i的上升子序列的结尾最小值,该数组一定单调上升 (1)当要更新以a[i]结尾的子序列的长度,需要

2021-05-24 11:40:54 385

原创 力扣664.奇怪的打印机题解

题目地址有台奇怪的打印机有以下两个特殊要求:打印机每次只能打印由 同一个字符 组成的序列。 每次可以在任意起始和结束位置打印新字符,并且会覆盖掉原来已有的字符。 给你一个字符串 s,你的任务是计算这个打印机打印它需要的最少打印次数。示例 1:输入:s = “aaabbb” 输出:2 解释:首先打印 “aaa” 然后打印 “bbb”。 示例 2:输入:s = “aba” 输出:2 解释:首先打印 “aaa” 然后在第二个位置打印 “b” 覆盖掉原来的字符 ‘a’。提示:1 <= s.l.

2021-05-24 09:15:54 239

原创 序列最大收益

题目地址给定一个长度为 m 的整数序列 a1,a2,…,am。序列中每个元素的值 ai 均满足 1≤ai≤n。当一个值为 i 的元素和一个值为 j 的元素相邻时,可以产生的收益为 wi,j。现在,我们可以从序列中删除最多 k 个元素,删除一些元素后,原本不相邻的元素可能会变得相邻。序列的收益和为所有相邻元素对产生的收益之和,例如一个长度为 3 的整数序列 1,3,2 的收益和为 w1,3+w3,2。请问,通过利用删除操作,能够得到的序列的最大收益和是多少?输入格式第一行包含三个整数 n,k

2021-05-12 20:39:32 168 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除