列表列表是布局内容排列整齐的区域,分为无序列表、有序列表、定义列表。
无序列表无序列表是布局排列整齐的不需要规定顺序的区域。
标签:ul 嵌套 li,ul 是无序列表,li 是列表条目。
例如
123456<ul> <li>第一项</li> <li>第二项</li> <li>第三项</li> ……</ul>
ul 标签里面只能包裹 li 标签
li 标签里面可以包裹任何内容
有序列表有序列表是布局排列整齐的需要规定顺序的区域。
标签:ol 嵌套 li,ol 是有序列表,li 是列表条目。
例如
123456<ol> <li>第一项</li> <li>第二项</li> <li>第三项</li> ……</ol>
ol 标签里面只能包裹 li 标签
li 标签里面可以包裹任何内容
定义列表标签:dl 嵌套 dt 和 dd,dl 是定义列表,dt 是定义列表的标题...
HTML 基础HTML的意思就是超文本标记语言(HyperText Markup Language),这里的超文本的意思就是多媒体内容,有文本、图片、音视频等内容,这里的标记就是使用代码的形式,使用尖括号的标签进行标记的意思,例如
标签结构
标签要成对出现,中间包裹内容
<>里面放英文字母(标签名)
结束标签比开始标签多 /
标签分类:双标签和单标签
123<strong>需要加粗的文字<strong><br><hr>
HTML骨架
html:整个网页
head:网页头部,用来存放给浏览器看的信息,例如 CSS
title:网页标题
body:网页主体,用来存放给用户看的信息,例如图片、文字
12345678<html> <head> <title>网页标题</title> </head> <body> 网页主体 </body></html>
VS Code 可以快速生成骨架:在 ...
正则表达式正则表达式(regular expression)描述了一种字符串匹配的规则,正则表达式本身就是一个字符串,使用这个字符串来描述、用来定义匹配规则,匹配一系列符合某个句法规则的字符串。在开发中,正则表达式通常被用来检索、替换那些符合某个规则的文本。
MySQL通过REGEXP关键字支持正则表达式进行字符串匹配。
格式
模式
描述
^
匹配输入字符串的开始位置。
$
匹配输入字符串的结束位置。
.
匹配除 “\n” 之外的任何单个字符。
[…]
字符集合。匹配所包含的任意一个字符。例如, ‘[abc]’ 可以匹配 “plain” 中的 ‘a’。
[^…]
负值字符集合。匹配未包含的任意字符。例如, ‘[^abc]’ 可以匹配 “plain” 中的’p’。
p1|p2|p3
匹配 p1 或 p2 或 p3。例如,’z|food’ 能匹配 “z” 或 “food”。’(z|f)ood’ 则匹配 “zood” 或 “food”。
*****
匹配前面的子表达式零次或多次。例如,zo* 能匹配 “z” 以及 “zoo...
数据查询DQL数据库管理系统一个重要功能就是数据查询,数据查询不应只是简单返回数据库中存储的数据,还应该根据需要对数据进行筛选以及确定数据以什么样的格式显示。
MySQL提供了功能强大、灵活的语句来实现这些操作。
MySQL数据库使用select语句来查询数据。
基本查询语法格式
12345678910select [all|distinct] <目标列的表达式1> [别名], <目标列的表达式2> [别名]...from <表名或视图名> [别名],<表名或视图名> [别名]...[where<条件表达式>][group by <列名> [having <条件表达式>]][order by <列名> [asc|desc]][limit <数字或者列表>];
这里的关键字太多了
where就是第一步的筛选条件,group by是分组条件,having是第二步的筛选条件,order by是排序,limit是限制条数
我们用到的最多的就是三个关键字
1select *| 列...
原题链接1264. 动态求连续区间和
题目难度:简单
题目来源:《信息学奥赛一本通》
题目描述给定 n 个数组成的一个数列,规定有两种操作,一是修改某个元素,二是求子数列 [a,b] 的连续和。
输入格式第一行包含两个整数 n 和 m,分别表示数的个数和操作次数。
第二行包含 n 个整数,表示完整数列。
接下来 m 行,每行包含三个整数 k,a,b (k = 0,表示求子数列[a,b]的和;k=1,表示第 a 个数加 b)。
数列从 1 开始计数。
输出格式输出若干行数字,表示 k = 0 时,对应的子数列 [a,b] 的连续和。
数据范围1≤n≤100000,1≤m≤100000,1≤a≤b≤n,数据保证在任何时候,数列中所有元素之和均在 int 范围内。
输入样例:123456710 51 2 3 4 5 6 7 8 9 101 1 50 1 30 4 81 7 50 4 8
输出样例:123113035
题目分析这道题的意思就是单点操作,区间查询
对于树状数组的来说是和我们之前讲解的内容相差无几
算法基础之树状数组
算法基础之线段树
示...
约束我们在之前创建表的时候有提到过约束条件(constraint),他的作用就是用于约束表中的数据,例如非空性,唯一性等,约束的分类也很多有如下
中文
关键字
主键约束
primary key(PK)
自增长约束
auto_increment
非空约束
not null
唯一性约束
unique
默认约束
default
零填充约束
zerofill
外键约束
foreign key(FK)
主键约束主键约束(primary key)形象化的来理解就是使用某一列或者几列作为这个表的标识,可以提高表的查询速度,主键约束其实就相当于唯一约束加上非空约束的组合,不允许重复也不允许出现空值,而且每个表最多只有一个主键,当主键约束被创建时,系统默认会在所在的列和列组合上建立对应的唯一索引,这里也是简单理解为可以用于快速查询的功能
添加单列主键创建单列主键有两种方式,一种是在定义字段的同时指定主键,一种是定义完字段之后指定主键
第一种
12345create table 表名( ... <字段名> <数据类型> prim...
线段树线段树的原理十分简单,但是在代码上会相对复杂一点
他也是用来维护一个序列,是一个完全二叉树的形状
对于每一个节点是一个结构体
12345struct Node{ int L,R; int sum; // 以和为例};
假设序列为1到7,那么根节点存的就是这7个数的总和,如果区间长度不是1的话,就会平均分成两部分,这两部分就是根节点的子节点,如此递归下去
他有两个操作,第一个操作是单点修改,是一个递归的过程,只用修改信息需要变化的节点,我们需要改变叶子节点,然后回溯时重新计算即可
第二个操作称之为区间查询,查询时,如果有查询区间可以包含某一个区间,那么就直接返回,如果是不包含,那么就是进行递归,直到包含,然后进行计算再回溯
线段树中有四个函数
第一个是pushup,用子节点信息更新当前节点信息,这个一般不用写,就一句话
第二个是build,在一段区间上初始化线段树
第三个是modify,是修改操作
第四个是query,查询操作
我们之后在题目中实践即可
树状数组树状数组能解决的最关键的问题就是能够$O(\log n)$内,给某个位置上的数,加上一个数,或者求前缀和
他和前缀和数组的区别就是,树状数组支持修改原数组的内容,而前缀和数组不支持,需要重新求前缀和数组
总结一下树状数组能做的操作就是单点修改和区间查询,对于他的其他的功能,例如区间修改,单点查询,区间修改,区间查询都是使用差分的思想转化成最基础的思想
这里我们需要利用图像来表示
这里的树状数组虽然画出来是个树,但本质上还是一维数组
其中的任意一个数字其实表示的是一段数的和,例如$C[8]=A[1]+\dots+A[8]$
那么对于$C[x]$,我们如何确定x的层数呢,其实是可以利用x的二进制表示,其中末尾有几个0,就是第几层的数字,假设他最后有k个0,那么$C[x]=\sum_{x-2^k+1}^xA[x]$,C++中有一个lowbit(x)函数,可以返回$2^k$,因此这个表达式也可以写成$C[x]=\sum_{x-lowbit(x)+1}^xA[x]$,补充这里这里的lowbit(x)函数的原理就是位运算$x&-x$
有了这部...