自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 问答 (1)
  • 收藏
  • 关注

原创 java基础

让类在一个虚拟机中只能产生一个对象,首先将类的构造器的访问权限设置为private,这样就不能在类的外部通过new操作产生类的对象,但在类的内部仍可以产生该类的对象。因为在类的外部开始无法得到类的对象,只能调用该类的静态方法以返回类内部创建的对象,静态方法只能访问类中的静态成员变量,指向类内部产生的该类对象的变量也必须定义为静态的。1.定义:在整个软件系统中,对某个类只能存在一个对象实例,且该类只提供一个取得其对象实例的方法。1.饿汉式—及时加载,随着类的创建,类的唯一实例也创建。

2024-02-28 09:51:23 397 1

原创 python数据存储之写入excel文件

步骤如下:1.导入xlwt模块;2.创建一个workbook对象;3.创建一个sheet对象;4.使用sheet.write方法把数据写到Sheet下指定行和列中。如果想在原来workbook对象上添加新的cell,需要调用put——cell来添加;5.保存成Excel文件;...

2021-09-15 10:12:46 345

原创 2021-06-14 python里把png格式转换成jpg格式

代码:import osfrom PIL import Imagedirname_read=“E:\BaiduNetdiskDownload\png/” # 最后的斜杠也是路径的一部分,须加dirname_write=“E:\BaiduNetdiskDownload\jpg/”names=os.listdir(dirname_read)count=0for name in names:img=Image.open(dirname_read+name)name=name.split("."

2021-06-14 14:40:51 355 2

原创 python之Latex公式编辑总结

1.Latex(r"f(x)=3x+7f(x)=3x+7f(x)=3x+7")结果:????(????)=3????+72.求和:Latex(r"∑i=1nai=0\sum_{i=1}^n a_i=0∑i=1n​ai​=0")3.\frac分数,\sqrt[n]求n阶导:Latex(r"7x+51+y2x2+y2xn+ynn\frac{7x+5}{1+y^2}\sqrt{x^2+y^2}\sqrt[n]{x^n+y^n}1+y27x+5​x2+y2​nxn+yn​")4.省略号:\ldots表示跟

2021-05-16 21:52:09 1048

原创 分类模型精确率,召回率总结

分类中,模型的预测结果划分:1.真正例(TP):将正类预测为正类2.假负类(FN):将正类预测为负类3.假正类(FP):将负类预测为正类4.真负类(TN):将负类预测为负类精确率(查准率)=TP/(TP+FP)召回率(查全率)=TP/(TP+FN)...

2021-05-12 09:35:32 219

原创 python里numpy数据分析函数

1.比较运算符:np.greater(arr1,arr2)= np.greater_equal(arr1,arr2)< np.less(arr1,arr2)<= np.less_equal(arr1,arr2)== np.equal(arr1,arr2)!= np.not_equal(arr1,arr2)2.常用的数学函数np.round(arr) 对各元素四舍五入np.sqrt(arr) 计算各元素的算术平方根np.square(arr) 计算

2021-03-05 19:01:36 217

原创 python网络爬虫之常见的响应状态码

1.200: 请求正常2.301:永久重定向3.302:临时重定向,比如在访问一个需要登陆页面的时候,此时若没有登陆,便会重定向到登陆页面。4. 400:请求的url在服务器上找不到,即url请求错误。5. 403:服务器拒绝访问,权限不够。6. 500:服务器内部错误。...

2021-03-01 17:36:56 292

原创 求最长上升子序列的长度和输出相应序列dp总结

代码:#include<bits/stdc++.h>using namespace std;int a[100],s[100],dis,cot,n,maxz; //s数组用来存放最长上升子序列的内容;int dp[100]; //dp[i]表示以i位置结尾的最长上升子序列的长度 ;int main(){cin>>n;for(int i=1;i<=n;i++) cin>>a[i];for(int i=1;i<=n;i++){dp[i]=1;

2020-10-24 18:13:34 374

原创 MySQL8.0 workbench数据库常用函数总结

1.now()函数:返回现在日期和时间;2.date_format()函数: 用以指定的格式显示日期和时间例:date_format(now(),’%Y%m%d ‘%H:%i:%s’);3.聚合函数:min,max,count,avg,sum;4.ifnull(v1,v2)函数:用于处理空值,若v1的值不为NULL,返回v1,否则返回v2;例:ifnull(1/0,0)5.case when函数:类似C语言if else或switch,用于获取更加准确的结果。例子:sex1表示男,2表示女,

2020-10-24 11:56:13 1253

原创 蓝桥杯算法提高VIP1923 学霸的迷宫

输入:第一行两个整数n, m,为迷宫的长宽。接下来n行,每行m个数,数之间没有间隔,为0或1中的一个。0表示这个格子可以通过,1表示不可以。假设你现在已经在迷宫坐标(1,1)的地方,即左上角,迷宫的出口在(n,m)。每次移动时只能向上下左右4个方向移动到另外一个可以通过的格子里,每次移动算一步。数据保证(1,1),(n,m)可以通过。输出:第一行一个数为需要的最少步数K。第二行K个字符,每个字符∈{U,D,L,R},分别表示上下左右。如果有多条长度相同的最短路径,选择在此表示方法下字典序最小的一个

2020-10-05 21:00:11 248

原创 求字典序最小的字符串总结

最小字典序:题目描述:给定长度为N的字符串为S,要构造一个长度为N的字符串T。起初,T 是一个空串,随后反复进行下列任意操作。①:从S的头部删除一个字符串,加到T的尾部,②:从S的尾部删除一个字符,加到T的尾部思路解析:将字符串S和反转后的字符串S‘逐一进行字符的比较,若前者第一个小于后者第一个,则将S的首字符放入T中,若S的首字符大于S’的首字符,则将S‘的首字符放入到T中,若两者相等,则都可以;代码://求字典序最小的字符串#include<bits/stdc++.h>us

2020-10-05 17:03:58 3079

原创 python常用的正则符号汇总

1.英文状态的句号.:指代任意字符,如数字,字母,标点符号,汉字等,但除了换行符\n。2.反斜杠: 表示转义字符,用于转换含义的符号\n:指代换行\t:指代tab制表符\d:指代0~9中的任意数字\s:指代任意一种空白,如空格,tab,换行等\w:指代字母,数字和下划线中的任意一种.:指代句号.本身3.英文状态的中括号[]:指代字符集合,当需要特定字符匹配时,可以选择中括号4.英文状态的圆括号(): 指代特定内容的截取5.英文状态的?号: 表示匹配前一个字符0次或1次6加号+

2020-10-03 16:49:37 1442

原创 python正则表达式的使用场景总结

前提:pycharm里先导入re模块1.查询findall(pattern,string,flags=0)pattern:指定需要匹配的正则表达式string:指定待处理的字符串flags:指定匹配模式,常用值有:re.I,re.M,re.S,re.X;re.I让正则表达式对大小写不敏感;re.M让正则表达式可以多行匹配;re.S指明正则符号;re.X允许正则表达式写得更详细,如多行表示,忽略空白字符,加入注释等;2.替换sub(pattern,repl,string,count=0,

2020-10-01 18:12:18 364

原创 洛谷P1657选书总结

总结:本题依然是典型的DFS题目,状态空间很好想,就是x即第几个人,关键是每个人喜欢两本书如何存储此状态,有点懵,看了下题解,比较好的办法就是设置like[i][j]数组,表示第i个人喜欢第j本书,一个简单的二维数组巧妙地解决了这个问题,接下来就是递归搜索:注意有易错点:1.当ans=x时放在for循环语句里,计数加1,此时不要return,并不是每个递归终止都要写return语句,写了后本题会报错,因此需要就题论题,思维不能僵化;2.回溯语句都要放在else外面,之前刷题时也注意到,这里在强化记忆

2020-09-23 19:57:19 190

原创 洛谷1036选数总结

思路总结:本题还是典型的DFS题目,关键在于状态空间的选取,我想了想,用void DFS(int now,int sum),其中now表示从n个数中选取k个数,相当于放在k个位置,now即代表第几个位置,sum表示求和,但是在for循环选数的时候,思路卡了壳,原因就是每次都是从1~n选取,会有数的重复,时间复杂度也不划算,看了下题解,发现别人用的是void DFS(int x,int y)表示,其中x表示已经选了几个数,当xk时,表示k个数已经全部选取完毕了,y表示从第几个数开始选取,for循环:for(

2020-09-17 20:13:09 285

原创 极值OJ抓住那头牛总结

总结:本题是非常经典的BFS搜索类型,由于农夫每走一步都有三种选择或三种决策,走到当前状态时又是从上一个状态转移过来,类似于树一层一层地去搜索遍历,每个子节点有三个“儿子”,从而遍历整棵树,找到时间的最小值,总结以后遇到枚举当前状态空间时,若出现多种选择或决策时,应该优先考虑广搜BFS!!!错因:本题思考了将近20分钟,没有思路,关键在于对于广搜BFS的应用场景不是很熟悉,一开始的出发点都错了,因为本题在枚举每一步的状态空间时,都会遇到三种选择,明显用BFS做更合适。代码:#include<b

2020-08-26 18:49:12 109

原创 洛谷P1451求细胞数量再总结错因

总结:本体考虑用DFS解决问题时,发现了两个之前并没在意的错因,第一个便是在编写搜索函数时,对于搜索的条件并没有设置,导致没有编译通过,程序报错,以本题为例,递归终止条件自然不用多说,即是否越界,而搜索之前,须先判断当前位置是否为细胞数字,是的话,才去搜索,否则不搜;前几次编译的时候,就因为没有设置该条件,导致程序无法运行,直接终止了。第二个便是一直忽略的错误,比如去枚举搜索四个方向时,注意观察一下两个程序的区别,此处细节直接决定成败!方向1:(程序错误展示)int dx[4]={-1,1,0,0};

2020-08-26 17:15:11 185

原创 图的存储—邻接表代码总结

#include<bits/stdc++.h>#define maxn 111111using namespace std;struct edge{int to,val;};vector p[maxn];int v[maxn][maxn];int main(){int n,m; //n个顶点,m条边;for(int i=1;i<=m;i++){int u,v,l;cin>>u>>v>>l;p[u].push_back((ed

2020-08-14 09:53:10 239

原创 洛谷P2802回家(DFS,剪枝)

题目总结:本题需要注意两点:1.属于求最小值的DFS问题,没有明显的结束递归标志,一般这种情况设置上界,当超出上界时,退出;比如nm格子组成的网格图,从起点出发枚举搜索,当步数>mn时,退出递归,作为结束标志;2.本题常规搜索DFS,会超时,需要进行适当的剪枝操作,比如本题求最小值,当目前状态搜索的值大于之前已求出的最小值,则return 退出;同理,如若要求最大值,若此时的状态值小于之前求出的值,则return掉,节省时间复杂度; 代码: #include<bits/stdc++.h

2020-08-03 22:12:11 245

原创 洛谷1030求先序排列(DFS)

题目内容:给出一棵树的中序和后序排列,输出先序排列;样例:中序:BADC后序:BDCA输出:ABCD思路:根据树的遍历知识,后序的最后一个节点都代表一棵子树的根,如本例A为主根,然后从中序中遍历寻找主根A的位置,从而划分出左右子树;根据左右子树结点的个数,将后序划分,继续按之前操作步骤,递归搜索,先输出跟,再找左右子树,直到空树为止。代码:#include<bits/stdc++.h>using namespace std;string s1,s2;void dfs(int

2020-08-03 15:08:41 199

原创 洛谷1451求细胞数量题解 (DFS,BFS)

题目内容:有一个nxm矩阵,存放细胞,其中细胞数字为1~9,非细胞数字为0,细胞的定义为沿细胞数字上下左右若还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数。(注意:除了n,m外,其他n行m个数输入均为字符,需要转换)思路一:DFS深搜:逐个去枚举(1,1)–(n,m),判断哪些是细胞数字,哪些已经被访问过,未被访问过且是细胞数字的坐标标记为true,count1++,同时再去寻找它的上下左右四个方向,标记与它相邻的细胞,统一计数为相同细胞;代码:#include<bits/stdc++.

2020-08-02 16:37:41 553

原创 洛谷1507NASA的食物计划

思路:典型的0-1背包问题,不过是在传统的基础上变成了两个限制条件:体积V和质量M;有两种方法,一种是开三维的f[i][j][k],写个三层for循环,来找f[N][V][M]的最优值;另一种是开二维的f[j][k],前者表示体积,后者表示质量,然后遍历.代码一:三维#include<bits/stdc++.h>using namespace std;int V,M,N,v[50],m[50],c[50];int f[50][401][401],j,k;int f2[401][4

2020-07-25 11:17:23 81

原创 Leetcode二叉树最大深度(DFS,BFS)

给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。代码:#include<bits/stdc++.h>#includeusing namespace std;struct TreeNode{ int val; TreeNode *left; TreeNode *right; TreeNode(int x): val(x),left(NULL),rig

2020-07-24 09:36:29 162

原创 二叉树之先序,中序,后序遍历的两种方法:递归和非递归+层序遍历的BFS

//总结二叉树中的先序,中序,后序,层序://一.递归:#include<bits/stdc++.h>#include#include#includeusing namespace std;struct TreeNode{int val;TreeNode *left;TreeNode *right;TreeNode(int x):val(x),left(NULL),right(NULL) {}};//先序递归:void preOrderRecur(TreeNode

2020-07-23 11:51:52 102

原创 洛谷2074危险区域总结

思路总结:推荐使用深搜DFS,本题陷入一个误区,误以为有k个炸弹区域,实际题目应理解为在NM个街道内,只有一个炸弹放置点,但是该位置不确定,有k个怀疑的地方,所以应枚举这k个区域,要做最坏情况,即找在k种情况下,哪种地区街道受威胁的个数最多;其次,本题放在NM矩形区域内,以N代表横轴,M代表纵轴,不好理解的话,可以这样思考,将N*M区域逆时针旋转90度,N落在x轴上,M落在y轴上,枚举直线距离小于等于该爆炸点的街区,并最终在k种情况下,取最大值,即为最坏情况;代码:#include<bits/

2020-07-21 17:50:18 136

原创 总结深度优先搜索DFS,广度优先搜索BFS模板

一.DFS模板框架:void DFS(参数){if(参数越界或不合法)return ;if(参数达到边界终止条件){pritnf(输出答案);return ; //终止当前函数}for(枚举当前所有方案){if(当前方案合法/方案没有被标记过){记录当前方案;标记当前方案;DFS(下一个位置);还原标记;}}}二.广度优先搜索:void BFS(参数类型: 参数){queue<参数类型> q; //先定义队列;q.push(参数);

2020-07-15 17:06:05 88

原创 图论之dijkstra算法求最短路:

//dijkstra算法求最短路:#include<bits/stdc++.h>using namespace std;#define N 3000const int INF=0x3f3f3f3f;int dis[N],vis[N],edge[N][N],pre[N];int a,b,w,s,t,n,m; //w为权重,s,t分别为指定的求最短路的起点和终点;int main(){ void search(int x); void dijkstra();

2020-07-14 15:59:45 230

原创 图论之Floyd算法总结

一.求任意两点间的最短路径(有权图)Floyd算法代码:#include<bits/stdc++.h>using namespace std;int dis[100][100],x,y,z;int n,m,p;  //n,m分别代表图的边和节点int main(){ memset(dis,0x3f,sizeof(dis)); cin>>n>>m; for(int i=1;i<=n;i++) {

2020-07-13 22:26:54 324

原创 数据结构之链表操作总结

1.以双向链表为例,插入操作代码:先以结构体存储节点的键值,前驱和后继struct node{int x;node *next,*pre;node(int _x,node *_pre,node *_next) : x(_x),pre(_pre),next(_next) { }};node *head=new node(0,NULL,NULL); //先插入节点 void insert(node *p,int x) { node *q=new node(x,p,p->nex

2020-07-12 22:18:23 121

原创 总结动态规划之子序列类型模板

一.求最长上升子序列的长度和对应的子序列:设a[i]存储整个序列的数组,f[i]表示以i作为结尾求出的子序列的长度;代码:(先求长度)for(int i=1;i<=n;i++){for(int j=1;j<i;j++){if(a[j]<a[i])f[i]=max(f[i].f[j]+1);}}int ans=0;for(int i=1;i<=n;i++)ans=max(ans,f[i]);printf("%d\n",ans); //即整个序列里的最长上

2020-07-12 17:08:53 88

原创 分组背包优化总结

优化思想:采用二进制优化,即在原先从1开始枚举到n的过程中,将n拆分成1,2,4,8,16,32…即2的整数次幂,剩余的没法组成2的整数次幂的单独分成一组,比如123=1+2+4+8+16+32+60,由于64>60,所以60单独分成一组,则在[1,63]区间内任意整数都可由2的整数次幂来表示,比如35=32+2+1,37=32+4+1;而[64,123]区间内的任意整数可由[1,63]加上60即可表示,从而将枚举的时间复杂度n变成log2n,利用新分成的组数进行0-1背包代码:int kind

2020-07-10 22:34:21 574 1

原创 区间DP总结

一.序列是一个链(非环),求从区间(l,r)之间的最大得分,典型问题:石子数问题。f(l,r)表示把第l堆到第r堆的石子合并在一起的最大得分,最后合并在一堆的石子来源于前两堆,其中一堆在(l,k),另一堆在(k+1,r)区间内,而k范围在l~r-1内,所以只需枚举k即可求出。动态转移方程: f(l,r)=max(f(l,k)+f(k+1,r)+sum(l,r))其中sum(l,r)用前缀和求出:sum(l,r)=r-l+1;二.如果要寻找的最大得分是一个圈(即环):假设一个圈个数为n,将他们扩展成

2020-07-06 10:31:23 114

原创 总结0-1背包和完全背包代码:

一.不考虑时间复杂度和空间复杂度,只考虑正确性的传统模板:(1) 0-1背包:n表示物品个数,c[i]表示第i个物品的价值,v[i]表示第i个物品的容积,给定背包总容积Vfor(int i=1;i<=n;i++){for(int j=0;j<=V;j++){f[i][j]=f[i-1][j];if(j-v[i]>=0)f[i][j]=max(f[i][j],f[i-1][j-v[i]]+c[i]);}}int ans=0;for(int i=0;i<=V;i+

2020-07-02 22:51:06 387

原创 洛谷1734“最大约数和”问题(典型动规背包)

题目描述选取和不超过S的若干个不同的正整数,使得所有数的约数(不含它本身)之和最大。输入格式 输入一个正整数S。输出格式 输出最大的约数之和。思路:本题属于典型的动态规划0-1背包问题,即若干个不同的正整数,每个数最多取一次,修改下0-1背包模板即可,主要是多了求正整数的约数和步骤。先找对应指标,S即为背包容积V,i从1~S即为个数,a[i]存储每个数的约数和代表价值,例如a[6]的约数和1+2+3=6(不包括本身),使约数和最大。第一步:先用函数求每个数的约数和:int find(int x)

2020-07-02 21:34:54 608

原创 2013蓝桥杯真题: 危险系数

问题描述抗日战争时期,冀中平原的地道战曾发挥重要作用。地道的多个站点间有通道连接,形成了庞大的网络。但也有隐患,当敌人发现了某个站点后,其它站点间可能因此会失去联系。我们来定义一危险系数DF(x,y):对于两个站点x和y (x != y), 如果能找到一个站点z,当z被敌人破坏后,x和y不连通,那么我们称z为关于x,y的关键点。相应的,对于任意一对站点x和y,危险系数DF(x,y)就表示为这两点之间的关键点个数。本题的任务是:已知网络结构,求两站点之间的危险系数。输入数据第一行包含2个整数n(2

2020-06-30 17:27:08 137

原创 洛谷2036深搜题目

题目描述:2036Perket 是一种流行的美食。为了做好 Perket,厨师们必须小心选择配料,以便达到更好的口感。你有N种可支配的配料。对于每一种配料,我们知道它们各自的酸度 SSS 和甜度 BBB。当我们添加配料时,总的酸度为每一种配料的酸度总乘积;总的甜度为每一种配料的甜度的总和。众所周知,美食应该口感适中;所以我们希望选取配料,以使得酸度和甜度的绝对差最小。另外,我们必须添加至少一种配料,因为没有美食是以白水为主要配料的。思路:一般要求某某最小,现设初始化ans为无穷大,即ans=0x3

2020-05-16 18:43:32 476

原创 DFS模板框架

DFS:void dfs(参数){if(参数越界或不合法)return ;if(参数达到边界终止条件){for()printf(“输出相应值”);return ;}else{if(当前方案合法或还未被标记过){记录当前方案;标记当前方案;dfs(下一位置);还原标记;}}}...

2020-05-09 20:48:06 191

原创 用递归解决汉诺塔问题

汉诺塔问题:思想:递归,考虑n个金条从A放到B,将问题缩小,考虑n-1个金条如何放置,以此类推,直到n=2,将小的放到中转站B上,大的放到C上,再将小的放到C上;n=1,直接由A放到B;核心:将大的问题不断地划分小的问题,n,n-1,n-2,…2,1;代码:#include<bits/stdc++.h>using namespace std;int main(){voi...

2020-04-24 09:31:23 95

原创 递归求解全排列问题

”递归+回溯“思想:n个数,每个数都有机会成为前缀的树,比如n=={a1,a2},–{a1,a2},{a2,a1};n=3,{a1,a2,a3},处于前缀的有{a1,…},{a2,…},{a3,…};后面的两个数情况雷同n=2;所以n>=3时,全排列的情况有:第一个位置:n,第二个位置:(n-1),… n!种情况.代码:#include<bits/stdc++.h>...

2020-04-12 17:53:44 214

原创 洛谷1024一元三次方程求解

思想:二分+枚举代码:#include<bits/stdc++.h>using namespace std;double a,b,c,d;int main(){ double f(double x); cin>>a>>b>>c>>d; int s=0; for(int i=-10...

2020-04-10 20:16:13 172

空空如也

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

TA关注的人

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