自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

翻译 nginx快速入门

nginx可用于提供静态内容,做代理服务器……nginx由一个主进程和几个工作进程组成,主线程的目标是去读取配置并管控工作线程,工作线程处理实际的请求。nginx的运行模式由配置文件进行控制,配置文件名为nginx,一般情况下被放置在/etc/nginx, or。

2023-04-14 12:02:18 140

原创 多重背包问题-二进制优化-详细解析

假设对于最佳方案的选取选择了熟练为cnt的物品,cnt必定可以用上面这几堆的物品进行表示,所有我们枚举这几堆的选与不选一定可以得到最佳方案的选取情况。对于某种熟练s为物品i, 如果我们可以把物品i分成几堆,并且通过这几堆物品的组合可以拼凑出0 - s件物品。举一个例子:对于数目为600的物品,可以将其分成,1,2,4,8,16,32,64,128,256,89。现在考虑如何将s件物品分堆,使之可以表示0-s件物品,考虑二进制表示,对于1,2,4,8,……,则不满足k为最大值,使得2。可以表示0----2。.

2022-08-16 20:20:18 306

原创 node.js基础知识

引言本篇文章涉及的内容仅仅是node.js的基础知识,其主要目的是供日后复习和查阅,不会涉及第三方库。初始node.js什么是node.jsNode.js是js的后端运行环境,有了Node.js就可以用js做一些后端可以可以做得事。安装node.js官网安装地址安装时的选项全部默认即可安装完成后在命令行输入node -v如果显示了node的版本,则安装成功用node.js运行js代码在命令行输入node [js文件的路径]就可以运行代码了fs文件系统模块引入fs文件系统模

2022-05-10 12:18:44 242

原创 蓝桥杯2016初赛python题解

蓝桥杯2016初赛[蓝桥杯2016初赛]网友年龄[蓝桥杯2016初赛]生日蜡烛[蓝桥杯2016初赛]方格填数[蓝桥杯2016初赛]寒假作业[蓝桥杯2016初赛]剪邮票[蓝桥杯2016初赛]四平方和[蓝桥杯2016初赛]密码脱落[蓝桥杯2016初赛]最大比例[蓝桥杯2016初赛]煤球数目[蓝桥杯2016初赛]凑算式[蓝桥杯2016初赛]交换瓶子[蓝桥杯2016初赛]报纸页数[蓝桥杯2016初赛]平方怪圈[蓝桥杯2016初赛]冰雹数[蓝桥杯2016初赛]卡片换位[蓝桥杯2016初赛]搭积木[蓝桥杯2016初赛]

2022-04-05 16:36:37 2163

原创 蓝桥杯2015初赛python题解

方程整数解思路:枚举+优化不必写三个循环,可以直接通过a和b得出c的值,再判断c是否合法就行了。写三个循环会超时。import mathwhile True: n = int(input()) flag = 0 for a in range(1, 101): for b in range(a, 101): c = n - a*a - b*b if c < 0:

2022-03-19 20:36:57 1181

原创 grid栅格布局详解

一、概述如果说flex是为一维布局而存在的,那么grid是为二维布局而存在的。grid布局被称为栅格布局,也被称为网格布局,他可以将网页划分为许多个方格,我们可以在网格中填充自己的内容。二、grid布局的基本内容1、术语如下图栅格线:图中,横向或者纵向的一条线栅格轨道:由两条相邻栅格线所包围的部分栅格区域:由栅格线包围的矩形区域栅格单元:最小的栅格区域2、定义指定容器采用网格结构通过指定它的display属性值为grid或inline-grid。grid表示指示容器采用块级结构。

2021-11-17 20:24:04 6890 2

原创 flex弹性盒布局详细讲解

flex弹性盒布局一.如何将一个容器设置为弹性容器二.设置弹性容器中弹性元素的排列方式flex-deretion属性三.设置弹性元素的换行四.主轴与垂轴1.概念2.flex-deretion和flex-wrap对主轴和垂轴方向的影响五.主轴与垂轴上的对齐方式justify-content属性align-items属性align-content属性align-selforder属性六.“弹性”flex-shrink属性flex-grow属性flex-basis属性flex属性一.如何将一个容器设置为弹性容器

2021-11-06 12:01:06 1853

原创 A.Mio visits ACGN Exhibition

A**思路:**爆搜的复杂度是指数级别的,考虑动态规划。设f[i][j][k]表示走到位置(i, j)且经过0的个数为k的路径数。容易得到以下的状态转移方程(i, j) = 0, f[i][j][k] = f[i − 1][j][k − 1] + f[i][j − 1][k − 1](i, j) = 1, f[i][j][k] = f[i − 1][j][k] + f[i][j − 1][k]由于0的个数不可能超过步数(n + m -1),所以此时的复杂度是0(nm(n+m-1))的,可以达到要

2021-10-24 15:16:38 3400 3

原创 CSS3之基础选择器入门

css选择器标记选择器id选择器和类选择器通配符选择器交集选择器并集选择器后代选择器要想将css样式应用指定的html元素,首先要找到该目标元素。执行这一任务的样式规则部分被称为选择器。以下是使用选择题指定html元素的格式规则选择器{属性1:属性值1;属性2:属性值2;}标记选择器基本语法格式为:标记名{属性1:属性值1;属性2:属性值2;}用标记选择器可以对所有该类型标记都生效例如:<!DOCTYPE html><html lang="en"><h

2021-10-17 17:09:35 712

原创 动态规划:蒙德里安的梦想

题目链接输入样例:1 21 31 42 22 32 42 114 110 0输出样例:10123514451205解题核心: 将矩阵看成N×M个小正方形, 如果将横的1×2举证嵌入其中,那么竖得2×1矩阵也就确定,方案数也就确定。总的来说,横矩阵的摆放方案数就是总方案数。...

2021-09-14 12:03:01 134

原创 kmp算法(详解)

在日常生活中我们常常会遇见在一篇文章中找关键词的事情。如果用程序来解决你会怎么做???ps:假设文章字段为t, 关键词为p暴力解法:枚举文章中的每一个点,然后往后匹配是非为关键字???就像这样, 挨个匹配每个字符。int lent = strlen(t);int lenp = strlen(p);for(int i = 0; i < lent; i++){ int flag = 1;//是否成功匹配 if(i + j >= lent) break; fo

2021-09-05 19:52:22 1400 1

原创 AC自动机(详解)

需要提前了解的知识:KMP, 字典树例题:传送门AC自动机是KMP和字典树的结合体, 如果说KMP用于单模式匹配,那么AC自动机是用于多模式匹配的。举个例子,KMP适用于在一篇文章中找一句话, AC自动机适合在一篇文章中寻找多句话(并不是简单的多用几次KMP)。KMP算法构建了一个查询表(nex数组), 我们可以按照相同的思路构建nex表,在ac自动机中成为失配数组。算法思路: 先将所有的模式串建立字典树, 建立nex数组,然后就开始匹配。...

2021-09-04 21:10:44 11856 11

原创 费马小定理和扩展欧几里得求逆元

什么是逆元:如果有a*x = 1%p, 则称x是a的逆元有公式(a + b)%p = (a%p + n%p)%p(a - b)%p = (a%p - n%p)%p(a × b)%p = (a%p × n%p)%p但没有(a / b)%p = (a%p / n%p)%p于是逆元的作用就体现出来了求出b的逆元inv就可以有(a/b)%p = (a*inv)%p运用乘法的公式,我们就可以在乘的过程中进行取模。那么对于(a / b)%p, 我们又如何求的b的逆元,(这里介绍两种情况, 第一

2021-08-19 20:50:14 333 1

原创 笔记本(c++)

如何去除小数的末尾零:printf("%.45g", f);如何测代码运行时间int main(){ clock_t start_time=clock(); for(int i =1; i <= 1000000l; i++) { } clock_t end_time=clock(); cout<< "Running time is: "<<static_cast<double>(end_time-sta

2021-08-18 11:17:52 162 2

原创 二分图的判别与求最大匹配数

判断二分图:染色法**二分图:**只有偶数环没有奇数环的图**算法思路:**未染色的点初始化为-1,将一点染色成0,然后将其连接的点染成1,与染成1连接的点染成0……,以此类推,如果有点将会染成两种颜色则染色失败,改图不是二分图。模板代码实现:int e[M], h[M], nex[M], idx;int color[N];//-1表示没有染色int n,m;//点数与边数void add(int a, int b){ e[idx] = b; nex[idx] = h[a

2021-06-16 15:56:55 185 1

原创 求最小生成树

对于求最小生成树的问题大多都可以用这两种算法解决。朴素prime算法:算法思路:循环n次,每次取出距离生成树距离最小者,加入生成树,用其更新其他的点代码实现:const int N = 1e5+10, INF = 0x3f3f3f3f;bool st[N];//是否在生成树中int dist[N];//到生成树的距离(距离生成树中点的距离最小者)int g[N][N];//邻接举证存边//不存在则返回无穷int prime(){ memset(dist, 0x3f, sizeof.

2021-06-13 08:13:18 131 1

原创 各种最短路问题的求解方式

限制:bellman_ford 和 spfa 可用于判断负环, 其他算法只能用于无负环情况。朴素dijkstra算法(ps: 因为时稠密图,我们用邻接矩阵来存图)设定dist[i]为点i到1的最短距离st[i]为该点的最短距离是否已经确定假设我们要求点1到点n的最短距离先将dist数组初始化为*INF*,*dist[1] = 0*;循环n次每次取出所有点中dist最小的点t,并将其标记st[t] = true通过邻接矩阵用点t来更新其他的点(dist[j] = min(dist[j], .

2021-06-05 17:57:17 288

原创 scanf对于string的坑点

定义 string str;使用scanf("%s", &str[0]);并使用printf("%s", &str[0]); //正常 scanf("%s", &str[0]); printf("%s", &str[0]); //正常输出 cout<<str;//输出为空,但是如果使用cin读入str会正常输出用类似gets()读入也会造成这样的情况我猜想,这些函数原本只是适用于字符数组,其大小是已经确定了的,读入不会改变数组的大小(废

2021-05-21 15:43:50 310 3

原创 离散化

离散化,简单来说就是将一些分散不集中的点经过映射,让这些点不改变原来顺序,让其集中起来。举个例子:离散化的操作:排序->去重 //s储存的是需要离散的值 sort(s.begin(), s.end()); s.erase(unique(s.begin(), s.end()), s.end())对于离散化的用途:再举一个非常极端的例子,假设有1000个数,分布在[0, 10 ^ 9],我要对区间[l, r]询问区间和,你被要求用前缀和做,那你难道要开一个10 ^ 9的数组吗,这显然是行不

2021-05-20 22:36:00 429

原创 tarjan算法

本文只给最直接的结论而没有证明,想看详细教程的可以退出了!预备知识:有向图:图中任意两个节点的连边是有方向的。强连通:两个节点u,v。如果能在图中找出一条路劲从u到v,也能找出一条从v到u的路径,则称这两个节点是强连通的。强连通图:图中任意两个节点之间都是强连通的。极大强连通子图:往这个子图中加任意一个点都会使之不是强连通图,那么这个子图就是极大连通子图,也称强连通分量改图的强连通分量有(1,2,3,4), (6), (5)。tarjan算法旨在找出有向图的强连通分量。我们确立两个数组d

2021-05-10 20:26:08 225

原创 并查集 + 修改数组

并查集的作用是判断两个元素是否属于同一集合。我们用单个元素代表集合。我们判断是否属于同一集合的标准是判断这两个元素所属的元素是否相同。然后我们要实现以下功能,判断是否是同一集合,将两个元素并入一个集合。设立一个p[i]代表元素i所属集合的代表元素。(单个元素集合的代表元素就是它自己1.判断是否是同意集合只需判断代表元素是否相同即可,那我们实现寻找代表元素int find(int x){ if(x != p[x]) p[x] = find(p(x)); return p[x]}2.将两

2021-04-22 19:22:03 156

原创 树链剖分

预备知识线段树:https://blog.csdn.net/weixin_53360179/article/details/115528344(这个是我写的)链式前向星:https://blog.csdn.net/sugarbliss/article/details/86495945(别人的)

2021-04-21 08:40:29 115 2

原创 链式前向星简单讲解

链式前向星在效率上介于关系矩阵和邻接表,如果你觉得关系矩阵效率太低,又不想费事去造一个邻接表,那么你就可以选择链式前向星。以起点 终点 权值的例子为例增加边例:1 5 6就是链接1和5权值为6。下面我们以一组数据为例加边5 7//点数为5,7条边1 2 12 3 23 4 31 3 44 1 51 5 64 5 7to[i]表示边i的终点head[i]表示以i为起点的最后一条边,我们将head[]初始化为-1.w[i]表示边i的权值nex[i]表示与边i起点

2021-04-16 19:36:00 104 1

原创 线段树 + lazy标记

超级基础的讲解!!!!我先将如何通过线段树解决区间最大值问题来表示一个线段树线段树的核心思想时通过一个点来代表一个区间的信息,如下图(圆圈里面代表的时序号,下面是区间)我们将序号存入一维数组中,然后用序号代表下面区间的信息。将区间进行二分分为左孩子和右孩子。这些序号有一点规律,一个点的序号是rt,那么左孩子的序号是2rt,右孩子的序号是2rt + 1。首先来建树,建树是利用递归的思想,建左数,再建右树,再用左树和右树的信息建立当前节点//序号为rt并且代表区间l到rvoid bulid(i

2021-04-08 19:53:07 862 2

原创 如何正确打表

首先讲一些打表用途,在一些数据范围小,答案可以枚举,且时间要求上较为苛刻的题目中,我们可以采用暴力枚举的方法得出答案,然后将答案存入数组中,然后根据输入直接输出答案。这样一种方法我们称之为打表。(打表首先应该满足正确性而非效率)那我们开始实现吧!!!我们需要用到ostream库,其中内部的freopen函数用来打开/新建文档,我们将答案输出到文档中。freopen("data.out","w",stdout);/*函数解释:新建/打开"data.out"文件,模式"w"为写入模式("r"为只读模

2021-04-05 13:14:30 5835 1

原创 poj(1724):ROADS

这是一个典型的深搜问题,当常常会超时,关键在于如何剪枝,直接分析dfs代码吧!!!#include<iostream>#include<cstring>#include<algorithm>#include<vector>using namespace std;int K,N,R;struct Road{ int d,L,t;};vector< vector<Road> > G(110);int minL.

2021-01-22 19:27:03 152

原创 7617:输出前k大的数

这题采用分治的思想,很奇怪,我试着直接把整个数组进行排序,然和直接输出结果居然也没超时。。。。。这里最好的办法是用分治,减少时间。先将第一个数s进行排列,使得比s小的都在s的左边,同时比s大的都在s的右边,然后假设从s到最后的数(包括s)是range个,如果range==k,那就return了,把最后k个数快速排序后输出就好了。如果range<k,就再从s的左边重复进行上述操作,但这次你只需要k-rang个数,如果range>k,就从s的右边进行查找,仍然需要找k个数,然后一直下去一直找就ok.

2020-12-20 11:28:16 121 1

原创 4117:简单的整数划分问题

递归思想,将问题简单化,对于整数n,选取不大于n的数m作为一个因子,然后再数n-m中选取不大于m的数作为因子,一直递归下去。#include<iostream>using namespace std;int sum = 0;void Find(int n,int m){ if(n == 0)//n>=i的n-i会逐渐到达0,这就是临界条件 { sum +=1;//每找到一个sum加1 return ; } for(int i = m; i >= 1;.

2020-12-12 14:42:03 134

原创 2787:算24

递归求解,n个数字中选取两个数字进行四则运算,然后替代这两个数字变成n-1个数字,继续在n-1个数字中选取两个数字运算,剩下n-2个数字…,直到n=1时判断最后``这个数字是否为24就行了;#include<iostream>#include<cmath> using namespace std;double a[5];#define EPS 1e-6//浮点数运算不能用==,必须采用精度 bool Iszero(double x)//是否为0 { return.

2020-12-12 11:30:48 138 1

原创 4017:爬楼梯

直接看代码:#include<iostream>#include<cstring>#include<cmath>#include<cstdlib> using namespace std;int apple(int m, int n){ if(n > m) return apple(m,m); if(m == 0) return 1;//(m - n) >= 0 ; if(n == 0) return 0;//临界条件,注意:.

2020-12-09 17:43:22 96

原创 4017:爬楼梯

4017:爬楼梯(递归解答)递归的思想是将一个问题分解成类似一个个的子问题,在题目中我们假设走出第一步,第一步可能走两阶,也可能是一阶,那么n阶台阶的种数就是剩下的n-1阶的种数加上n-2阶台阶的种数,同理n-1阶台阶的数量就是n-2阶台阶的种数加上n-3,由此类推;#include<iostream>#include<cstring>#include<cmath>#include<cstdlib> using namespace std;in

2020-12-08 19:30:13 141

空空如也

空空如也

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

TA关注的人

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