自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 深度学习笔记

动手深度学习中的一些笔记

2022-12-17 11:54:28 489 1

原创 为什么学习率要逐渐增加再减少

学习率的为啥先增加再减少

2022-12-16 22:09:28 526

原创 batch_size应该怎么设置

batch_size的设置

2022-12-16 21:57:32 5344

原创 StyleGAN系列

包括PGGAN,StyleGANv1,v2以及styleCLIP的论文概要

2022-12-15 21:51:57 482

原创 java学习

/*1. 导包:import java.util.Scanner2. 实例化:Scanner scan = new Scanner(System.in);3. 调用Scanner类的相关方法(next() / nextXxx()),来获取指定类型的变量nextDouble、nextInt、next、nextboolean*/import java.util.Scanner;class ScannerTest{ public static void main(String[] args){

2021-07-27 21:23:35 214

原创 java学习-数据类型和运算符

da

2021-07-25 21:32:05 132 1

原创 java学习-java语言概述

Java 程序的运行机制和JAM编译型语言是指使用专门的编译器,针对特定平台(操作系统)将某种高级语言源代码一次性“编译”成可被该平台硬件执行的机器码(包括机器指令和操作作数),并包装成该平台所能识别的可执行性程序的格式,这个转换过程称为编译。编译生成的可执行性文件可以脱离开发环境,在特定的平台上独立运行。例如:C,C++,Objective-C,Swift,Kotlin等高级语言都属于编译型语言。解释型语言是指使用专门的解释器对源程序逐行解释成特定平台的机器码并立即执行的语言。解释型语言通常不会进

2021-07-11 11:54:22 134

原创 算法:在O(1)时间删除链表结点(脑筋急转弯)

思路由于并不知道当前结点的前驱结点,故无法使用传统的方法来删除结点。因此这里将下一个结点的值赋给当前结点,并删除下一个结点。这样在效果就相当于删除了当前结点。题目描述给定单向链表的一个节点指针,定义一个函数在O(1)时间删除该结点。假设链表一定存在,并且该节点一定不是尾节点。代码/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; *

2021-07-10 08:23:46 66

原创 算法:剪绳子(数学知识)

思路将绳子分为n段n=n1+n2+...+nan = n_1 + n_2 + ... + n_an=n1​+n2​+...+na​等价于求乘积最大max(n1∗n2∗n3....∗na)max(n_1*n_2*n_3....*n_a)max(n1​∗n2​∗n3​....∗na​)数学推导将绳子 以相等的长度等分为多段 ,得到的乘积最大。经过复杂的数学推导可以得出3比2更大,因此要尽可能的多分3出来。当n%3==2时说明分完3之后还余一个2。当n%3==1时说明分完3之后还余两个2。题目

2021-07-09 20:38:47 467

原创 (c语言易懂版)算法:第k个最长递增子序列

某个整数序列中,去掉0个以上的数字后,剩余的部分就是原序列的子序列。例如,{7,4,9}、{10,4}、{10,9}等是{10,7,4,9}的子序列。而序列{10, 4, 7}具有不同于原序列的排列顺序,因而不属于{10,7,4,9}的子序列。严格递增的子序列称为递增子序列。序列的递增子序列中,最长的序列称为最大递增子序列(LIS)。例如:{5,20,21,22,8,9,10}的最大递增子序列是{5,8,9,10}。(不唯一)给出以不同数字组成(无重复数字)的序列时,请编写程序,计算此序列的LIS中按照字

2021-06-22 10:41:29 1232 2

原创 leetCode-456. 132 模式(单调栈)

单调栈栈中的元素都是单调的,本题的关键就是k,从后往前遍历数组i,a[k]的数值必须大于a[i],并且在i~k中存在一个元素大于a[k]。因此选用单调栈。单调栈中维护的是不符合上述条件的k,每次遍历到新的i时查看单调栈中,比a[i]小的元素,并将其弹出,然后将自身放入栈中,同时记录弹出的值中最大的元素,因为弹出的这些元素保证前面有一个元素大于它,且下标小于它。所以每次遍历到新的a[i]时就判断当前a[i]是否小于k,如果满足就说明找到了“132”模式的值。class Solution {public

2021-03-26 17:17:36 93

原创 leetCode-92. 反转链表 II(迭代和递归); leeCode-206. 反转链表

迭代每次修改两个结点之间的指向关系。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* reverseList(ListNode* head) {

2021-03-18 21:29:31 107

原创 阿里云服务器Mysql环境以后本地连接失败(轻量级应用服务器)Can‘t connect to MySQL server on ‘‘(10060 “Unknown error“)

原因是:服务器3306端口没开。打开方法是打开轻量应用服务器管理控制器然后打开防火墙,在防火墙中添加规则,添加MySQL。就可以发现问题解决了。

2021-03-17 20:58:32 238

原创 算法:雷达设备(贪心)

贪心策略将所有区间按右端点排序扫描每个线段如果上一个点(右端点)不在区间中,则选右端点。如果上一个点(右端点)在区间中,则跳过。题目描述假设海岸是一条无限长的直线,陆地位于海岸的一侧,海洋位于另外一侧。每个小岛都位于海洋一侧的某个点上。雷达装置均位于海岸线上,且雷达的监测范围为 d,当小岛与某雷达的距离不超过 d 时,该小岛可以被雷达覆盖。我们使用笛卡尔坐标系,定义海岸线为 x 轴,海的一侧在 x 轴上方,陆地一侧在 x 轴下方。现在给出每个小岛的具体坐标以及雷达的检测范围,请

2021-03-12 10:27:21 211

原创 leecode-338 比特位计数(特殊性质)

题目描述给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。思路所有奇数的二进制都比它上一位偶数的二进制1的个数多1。所有偶数的二进制都与它的一半的二进制1的个数一样多。代码class Solution {public: vector<int> countBits(int num) { vector<int> m; m.push_back(0);

2021-03-03 22:03:11 86 1

原创 leecode-896 单调数列

本题相当简单class Solution {public: bool isMonotonic(vector<int>& A) { int flag = 0; for (int i = 0; i < A.size() - 1; ++i) { if (flag == 0 && A[i] < A[i + 1]) { flag =

2021-03-02 17:19:59 72

原创 leecode-304 二维区域和检索 - 矩阵不可变(前缀和的二维运算)

问题描述给定一个二维矩阵,计算其子矩形范围内元素的总和,该子矩阵的左上角为 (row1, col1) ,右下角为 (row2, col2) 。上图子矩阵左上角 (row1, col1) = (2, 1) ,右下角(row2, col2) = (4, 3),该子矩形内元素的总和为 8。思路可以看我之前写的有关前缀和的博客代码class NumMatrix {public: vector<vector<int>> s; NumMatrix(vector&l

2021-03-02 17:11:23 70

原创 leecode-11 盛最多水的容器(双指针)

问题描述给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器。思路代码class Solution {public: int maxArea(vector<int>& height) { int ans = 0; for (

2021-03-02 10:08:18 107

原创 算法:树的直径

思路第一步:从任意一点出发,找到与这一点距离最远的点。第二步:从最远的一点出发,找到与这点距离最远的点,则这两点之间的距离就是树的直径。问题描述很久以前,T王国空前繁荣。为了更好地管理国家,王国修建了大量的快速路,用于连接首都和王国内的各大城市。为节省经费,T国的大臣们经过思考,制定了一套优秀的修建方案,使得任何一个大城市都能从首都直接或者通过其他大城市间接到达。同时,如果不重复经过大城市,从首都到达每个大城市的方案都是唯一的。J是T国重要大臣,他巡查于各大城市之间,体察民情。所以,从一个

2021-02-19 10:56:35 317

原创 算法:最小生成树(prime,kruskal,floyd)

最小生成树Floyd算法O(n^3)- 动态规划思路f[i, j, k] 表示从i走到j的路径上除i和j点外只经过1到k的点的所有路径的最短距离。那么f[i, j, k] = min(f[i, j, k - 1], f[i, k, k - 1] + f[k, j, k - 1])读入邻接矩阵,每次通过动态规划转换成从i到j的最短距离矩阵在下面代码中,判断从a到b是否是无穷大距离时,需要进行if(t > INF/2)判断,而非是if(t == INF)判断,原因是INF是一个确定的值,并非真

2021-02-17 18:16:02 918

原创 算法:二分图的最大匹配(匈牙利算法)

匈牙利算法有点像挖墙脚这里的男孩子指的是左半部,女孩子指的是右半部。如果你想找的妹子已经有了男朋友,你就去问问她男朋友,你有没有备胎,把这个让给我好吧因为你要去问的都是男孩子,所以存边的时候,都是由男孩子指向女孩子。问题描述给定一个二分图,其中左半部包含n1个点(编号1n1),右半部包含n2个点(编号1n2),二分图共包含m条边。数据保证任意一条边的两个端点都不可能在同一部分中。请你求出二分图的最大匹配数。二分图的匹配:给定一个二分图G,在G的一个子图M中,M的边集{E}中的任意两条

2021-02-16 18:36:31 113

原创 算法:合并果子(优先队列)

思路每次将最小的两堆合并,然后将合并后的堆加入队列。循环往复n-1次就可以将n堆合并为一堆。需要注意的是优先队列的语法priority_queue<Type, Container, Functional>Type 为数据类型, Container 为容器类型, Functional就是比较的方式。//升序队列priority_queue <int,vector<int>,greater<int> > heap;//降序队列priority_qu

2021-02-14 09:39:13 257

原创 算法:糖果传递(数学推导)

思路:由于最后每个小朋友都会获得相同的糖果。因此最后每个小朋友获得糖果的数量应该是糖果总数的平均数。因此假设每个小朋友会给他逆时针位置上的朋友x1个糖果,那么x1位置上的小朋友就会送出x1个糖果接受x2个糖果,请看下图公式推导。最后可以看出最小代价就是x1到n个点距离的最小值,也就是这n个点的中位数。问题描述有n个小朋友坐成一圈,每人有a[i]个糖果。每人只能给左右两人传递糖果。每人每次传递一个糖果代价为1。求使所有人获得均等糖果的最小代价。输入格式第一行输入一个正整数n,表示小朋友的个

2021-02-10 08:34:32 343

原创 算法:欧拉函数

欧拉函数欧拉函数的定义:N=p1a1p2a2...pmam N = p_1^{a_1} p_2^{a_2}...p_m^{a_m} N=p1a1​​p2a2​​...pmam​​,则欧拉(N)=N∗p1−1p1∗p2−1p2∗...∗pm−1pm欧拉(N) = N * \frac{p_1-1}{p_1}* \frac{p_2-1}{p_2}*...* \frac{p_m-1}{p_m}欧拉(N)=N∗p1​p1​−1​∗p2​p2​−1​∗...∗pm​pm​−1​意义是与N互质的数的个数。质数p

2021-02-09 19:38:38 150

原创 算法:约数,约数个数,约数和,最大公约数(b ? gcd(b, a%b) : a;)

约数计算约数时,只需计算到n\sqrt{n}n​就可以,大于n\sqrt{n}n​的约数可以通过用n除以小于n\sqrt{n}n​的约数得到。并且需要特判一下边界n / i != i。void get_divosors(int n){ vector<int> ans; for(int i = 1; i <= n / i; ++i){ if (n % i == 0) { ans.push_back(i); i

2021-02-08 11:11:41 557

原创 算法:质数,质因数,筛质数

质数的判定 —— 试除法(O(sqrt(n))质数在大于1的整数中,如果只包含1和本身这两个约数,就被称为质数,或者叫素数。有3中形式由于sqrt()计算较慢。(不推荐)。bool is_prime(int n){ if (n < 2) return false; for (int i = 2; i <= sqrt(n); ++i) if (n % i == 0) return false; return true;}由于i*i有可能会

2021-02-07 21:41:10 94

原创 算法:leecode5675.最接近目标值的子序列和(双向dfs)

思路因为数据范围为40,因此需要用到双向dfs,如果数据范围小于20时就可以直接用dfs进行爆搜。思路是将整个数组分为两段,前面一段用dfs爆搜出全部组合的和并存储到数组中。然后将数组排序,再对后面一段进行爆搜,然后当搜索完最后一个元素后就进行二分查找前面与目标值的差最小的绝对值。问题描述给你一个整数数组 nums 和一个目标值 goal 。你需要从 nums 中选出一个子序列,使子序列元素总和最接近 goal 。也就是说,如果子序列元素和为 sum ,你需要 最小化绝对差 abs(sum - g

2021-02-07 16:50:30 206 1

原创 算法:关押罪犯(二分图判定,染色法)

判断一个图是否是二分图二分图的概念:如果顶点C可以分割为两个互不相交的子集,并且图中每条边(i, j)所关联的两个顶点i和j分别属于这两个不同的顶点集,则称图为一个二分图。奇数环的概念:一个环中边的个数是奇数。二分图当且仅当图中不含奇数环。将图中的每个结点染为1或2两种颜色,如果遇到一条边的两个点的染色是相同的,则说明该图不是一个二分图。应该在主函数中加一个for循环遍历每一个连通块,然后用bfs遍历连通块中的每一个结点,使其染色,然后判断是否矛盾,如果矛盾就返回false。用二分来枚举怒气值,

2021-02-07 09:55:31 263

原创 算法:最短路(dijkstra)

思路首先最外层循环n次,代表进行n次迭代确定每个点到起点的最小值,最后输出的终点即为要找的最短路的距离。dist[n] 用于存储每个点到起点的最短距离st[n] 用于在更新最短距离时 判断当前的点的最短距离是否确定 是否需要更新每次迭代过程中都需要找到当前未确定的最短距离的点中距离最短的点。int t=-1; for(int j=1;j<=n;j++){ if(!st[j]&&(t==-1||dist[t]>dist[j])

2021-02-06 16:45:41 164

原创 算法:聪明的质监员(二分,前缀和)

思路由题意可以知道当不断提高w的值时,满足wj>ww_j > wwj​>w的值会越来越少。因此所得的Y会越来越小,所以当提高w,Y就会减少,而题目要求出S−YS-YS−Y的最小值,因此可以用二分的方法通过改变w的值,从而找到S−YS-YS−Y的最小值,也就是Y最接近S的时候W应该取什么值。这里利用前缀和求出当前w值,满足wj>ww_j > wwj​>w的数值的前缀和,并计算前i个元素中满足相关条件的值的个数cnt。这样在计算每个区间中的yiy_iyi​时就会很快。最

2021-02-05 21:25:04 74

原创 算法:有向图的拓扑排序(拓扑排序)

思路:用数组模拟链表,首先如果能用拓扑排序则其一定是有向无环图。所以我们应该先找到其入度为0的点。然后将其入队,并将与此点相连的边全部删去。最后当队尾指针是n-1时说明一共入队n个元素说明此图是有向无环图。存在拓扑排序。注意:h[i]中存储的是元素在e[]中的下标。问题描述给定一个n个点m条边的有向图,点的编号是1到n,图中可能存在重边和自环。请输出任意一个该有向图的拓扑序列,如果拓扑序列不存在,则输出-1。若一个由图中所有点构成的序列A满足:对于图中的每条边(x, y),x在A中都出现在y之

2021-02-05 16:50:10 2662

原创 算法:地宫取宝(dp,动态规划)

思路首先给定了一个数n×m地图,每个格子上都有价值不同的物品,每次从左上角出发,然后只能向右或者向下走。每次走到新的格子上,如果当前格子上的价值大于手中全部物品的价值就可以拿走(也可以不拿)。问拿k个物品的方案数?本题用dp的思路来解题,首先用两维表示横坐标和纵坐标。然后用一维来表示当前手上的物品数量。用一维表示当前手中的最大值。当前格子是由左边格子过来的1.1 不取当前格子的物品1.2 取当前格子的物品1.2.1 (需要满足条件当前物品的价值为手中全部价值最大的)那么当前格子的情况就是所有价

2021-02-05 09:38:27 317 1

原创 算法:区间和(离散化,二分,去重)

离散化适用情况:数据可取范围很大,但实际取到的数量却很少。第一步先将需要离散化的数值排序去重sort(alls.begin(), alls.end()); // 排序erase(unique(alls.begin(), alls.end()), alls.end()) // 去重第二步利用二分找到每个值在数组排第几个然后返回值int find(int x){ int l = 0, r = alls.size() - 1; while(l

2021-02-05 09:08:15 313

原创 算法:蚂蚁感冒(蓝桥杯真题,数学知识)

思路由题意当两只蚂蚁相遇时,会掉头朝相反的方向走去,这也可以看作是两个蚂蚁相互穿透。被感冒的蚂蚁穿透之后,这只蚂蚁也会被感染。当第一只蚂蚁向右走,当它右边全部的蚂蚁全部都是向右走的时候,这样这只蚂蚁不会感染到任何一只蚂蚁。而当右边存在任何一只向左走的蚂蚁时,这只蚂蚁也会被感染,同时会将第一只被感染的蚂蚁的左边的所有朝右边走的蚂蚁感染。第一个蚂蚁向右走的情况:1.1 右边向左走的,必然被感染。2.1 右边向右走,必然不会被感染。3.1 左边向左走,必然不会被感染。4.1 左边向右走:4.1.

2021-02-04 17:51:01 284

原创 算法:买不到的数目(数学知识)

思路:本题就一个公式当两个数p,q互质时,那么由这两个数凑不成的数最大为(p−1)∗(q−1)−1(p-1)*(q-1) - 1(p−1)∗(q−1)−1问题描述小明开了一家糖果店。他别出心裁:把水果糖包成4颗一包和7颗一包的两种。糖果不能拆包卖。小朋友来买糖的时候,他就用这两种包装来组合。当然有些糖果数目是无法组合出来的,比如要买 10 颗糖。你可以用计算机测试一下,在这种包装情况下,最大不能买到的数量是17。大于17的任何数字都可以用4和7组合出来。本题的要求就是在已知两个包装的数

2021-02-04 16:39:22 294

原创 算法:机器人跳跃问题(二分)

思路因为当向上走的时候,它会失去能量故E=E−(H(k+1)−E)E = E - (H(k+1)-E)E=E−(H(k+1)−E),当向下走的时候,会增加能量E=E+(E−H(k+1))E = E + (E - H(k+1))E=E+(E−H(k+1))故可以整理得到E=2∗E−H(k+1)E = 2 * E - H(k+1)E=2∗E−H(k+1)。因此我们可以考虑当E比所有建筑都要高的时候每次E=E+E−H(k+1)E = E + E - H(k+1)E=E+E−H(k+1)都大于等于0因此E只会

2021-02-03 22:05:34 463

原创 算法:k倍区间(前缀和)

思路利用前缀和可以快速计算出一个区间的值,然后利用前缀和的取余相同时,相减之后就会等于0,说明如果有k个具有相同余数的区间的话,就能有(k-1)+(k-2)+…+1个区间满足的情况。cnt[0]++是因为如果s[i]取余的值为0时,就相当于从总区间的左端点到i的区间满足情况,所以应该提前加上cnt[0]++。问题描述给定一个长度为 N 的数列,A1,A2,…AN,如果其中一段连续的子序列 Ai,Ai+1,…Aj 之和是 K 的倍数,我们就称这个区间 [i,j] 是 K 倍区间。你能求出数列中总共有多

2021-02-02 12:10:57 276

原创 算法:牛异或(前缀和,trie树)

注意trie树的空间复杂度较高因为trie树是一棵二叉树由于每一层都有2i个数,因此一共需要2n+1个空间来存储。另外本题需要id数组来存储下标。也就是最后一层所有存在的数都对应着原数组的下标。因此id数组也需要和trie一样的存储空间。由于异或两次相当于没有异或,因此可以用前缀和来存储。通过端点的异或就可以计算出区间的异或值。问题描述农夫约翰在给他的奶牛们喂食时遇到了一个问题。他共有 N 头奶牛,编号 1∼N。每次喂食前,这 N 头奶牛会按照 1∼N 的顺序站成一排。此外,每头奶牛都被分配

2021-02-02 10:51:37 201

原创 算法:背包问题合集(基本囊括了全部背包问题的原始模型)

01背包问题思路每件物体只能使用一次,在固定容量的情况下,可以放入的最大价值。当只使用前i件物品时,可以获得的最大价值一定是大于等于只使用前i-1件物品的。因此当不包含第i件物品时,f[i][j] = f[i-1][j]当包含第i件物品需要满足条件v[i] <= j此时f[i][j] = max(f[i][j], f[i-1][j-v[i]]+w[i])问题描述有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。第 i 件物品的体积是 vi,价值是 wi。求解将哪些物品装入背包

2021-02-01 17:49:09 584

原创 算法:带分数(递归与递推)

思路本题可以枚举1到9的字典序,然后再枚举这三个数每一个数的位数,然后判断是否与系统所给的值相等。问题描述100 可以表示为带分数的形式:100=3+69258714还可以表示为:100=82+3546197注意特征:带分数中,数字 1∼9 分别出现且只出现一次(不包含 0)。类似这样的带分数,100 有 11 种表示法。输入格式一个正整数。输出格式输出输入数字用数码 1∼9 不重复不遗漏地组成带分数表示的全部种数。数据范围1≤N<106输入样例1:100输出样例1:1

2021-01-31 21:12:45 176

空空如也

空空如也

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

TA关注的人

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