Qt
第一章:认识Qt
如何添加第三方库
Qt Creater在pro文件下进行添加
Vs2019在右键属性Qt设置里添加
QMake与CMake
qmake:qt独有的代码构建工具
cmake:C++通用的代码构建工具,绝大部分C++开源项目都是使用cmake管理代码,如obs,jsoncpp
总结:
如果你主要在开发Qt应用程序,尤其是当你不需要复杂的自定义构建逻辑时,QMake可能是更简单直接的选择。
如果你的项目需要跨平台支持,或者你需要一种更灵活、功能更强大的构建系统,CMake可能是更好的选择。
Qt的三个窗口
QMainWindow:是Qt提供的一个主窗口类,它为应用程序提供了一个带有菜单栏、工具栏、状态栏、和可选的停靠窗口(dock widgets)和中心窗口的主窗口。适合做应用程序的主界面。
QWidget:是所有用户界面对象的基类。它可以作为一个独立的窗口或者是其他窗口(如QMainWindow、QDialog)中的一个组件使用。它通常被用来创建应用程序中的简单窗口或作为组合较复杂控件的基础。
QDialog:是用于创建对话框的基类。通常用于短暂的交互,如收集用 ...
英语作文
小作文
开头
This is Li Ming. I am writing this letter with my full heart for the purpose of putting forward some suggestion
我是李明,我写此信的目的是为了提一些建议
As one ordinary resident living here for more than twenty years, I feel obligated to write this very letter to state my concern over the increasingly deteriorating environmental situation.
作为一个在这里生活了二十来年的普通居民,我觉得有必要写下此信来陈述我的担心,关于日益恶化的环境现状。
On behalf of the Postgraduate Association, we are formally announcing that volunteers are needed.
谨代表研究生协会,我们正式宣布,招聘志愿者 ...
AcWing Web课
html基础标签
有疑问查询MDN:https://developer.mozilla.org/zh-CN/
html文件结构
文档结构
html的所有标签为树形结构,例如:
1234567891011<!DOCTYPE html><html lang="zh-CN"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Web应用课</title></head><body> <h1>第一讲</h1></body></html>
<html></html>:类似于根节点。
<body></body>、<title> ...
AcWing.3765 表达式树
请设计一个算法,将给定的表达式树(二叉树)转换为等价的中缀表达式(通过括号反映操作符的计算次序)并输出。
例如,当下列两棵表达式树作为算法的输入时:
输出的等价中缀表达式分别为 (a+b)*(c*(-d)) 和 (a*b)+(-(c-d))。
注意:
树中至少包含一个运算符。
当运算符是负号时,左儿子为空,右儿子为需要取反的表达式。
树中所有叶节点的值均为非负整数。
样例:
输入:二叉树[+, 12, *, null, null, 6, 4, null, null, null, null]如下图所示:
+
/ \
12 *
/ \
6 4
输出:12+(6*4)
数据范围
给定二叉树的非空结点数量保证不超过 $1000$。
给定二叉树保证能够转化为合法的中缀表达式。
时间复杂度
为$O(n^2)$
因为C++中字符串return并不是直接返回,而是先复制一遍再返回。
为了优化,可以不适用return进行返回,而是定义一个全局变量ans来记录最终的答案。
Code
未优化的,时间复杂度:$O(n^2)$
1234567891011121 ...
AcWing.18 重建二叉树
输入一棵二叉树前序遍历和中序遍历的结果,请重建该二叉树。
注意:
二叉树中每个节点的值都互不相同;
输入的前序遍历和中序遍历一定合法;
数据范围
树中节点数量范围 $[0,100]$。
样例
给定:
前序遍历是:[3, 9, 20, 15, 7]
中序遍历是:[9, 3, 15, 20, 7]
返回:[3, 9, 20, null, null, 15, 7, null, null, null, null]
返回的二叉树如下所示:
3
/ \
9 20
/ \
15 7
Code
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left; ...
AcWing.3786 二叉排序树
你需要写一种数据结构,来维护一些数,其中需要提供以下操作:
插入数值 $x$。
删除数值 $x$。
题目保证:
操作 $1$ 插入的数值各不相同。
操作 $2$ 删除的数值一定存在。
输出树的前序遍历
输入格式
第一行包含整数 $n$,表示共有 $n$ 个操作命令。
接下来 $n$ 行,每行包含两个整数 $opt$ 和 $x$,表示操作序号和操作数值。
数据范围
$1 \le n \le 2000$,
$-10000 \le x \le 10000$
输入样例:
4
1 1
1 3
1 5
2 3
输出样例:
1 5
思路
插入操作:
删除操作:
对于一个二叉排序树来说,中序遍历(左中右)是有序的。
有三种情况
该节点为叶节点
该节点存在一个左节点,或者一个右节点
该节点存在左节点、右节点
重点说明一下第三种情况:由于是一颗二叉排序树,故节点$X$的左子树中最右的根节点$A$一定是左子树中最大的值,故将节点$A$的值赋值给节点$X$,再递归遍历左子树,删除节点$A$。
Code
12345678910111213141516171819202122232425262 ...
AcWing.840 模拟散列表
840.模拟散列表
维护一个集合,支持如下几种操作:
I x,插入一个数 $x$;
Q x,询问数 $x$ 是否在集合中出现过;
现在要进行 $N$ 次操作,对于每个询问操作输出对应的结果。
输入格式
第一行包含整数 $N$,表示操作数量。
接下来 $N$ 行,每行包含一个操作指令,操作指令为 I x,Q x 中的一种。
输出格式
对于每个询问指令 Q x,输出一个询问结果,如果 $x$ 在集合中出现过,则输出 Yes,否则输出 No。
每个结果占一行。
数据范围
$1 \le N \le 10^5$
$-10^9 \le x \le 10^9$
输入样例:
5
I 1
I 2
I 3
Q 2
Q 5
输出样例:
Yes
No
开散列方法(拉链法)
核心:如果一个位置有多个重复映射到此处的元素,就开一个链表,将所有元素都存储下来。
$Code$:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636 ...
AcWing.3302 表达式求值
题意
给定一个表达式,其中运算符仅包含 +,-,*,/(加 减 乘 整除),可能包含括号,请你求出表达式的最终值。
注意:
数据保证给定的表达式合法。
题目保证符号 - 只作为减号出现,不会作为负号出现,例如,-1+2,(2+2)*(-(1+1)+2) 之类表达式均不会出现。
题目保证表达式中所有数字均为正整数。
题目保证表达式在中间计算过程以及结果中,均不超过 $2^{31}-1$。
题目中的整除是指向 $0$ 取整,也就是说对于大于 $0$ 的结果向下取整,例如 $5/3=1$,对于小于 $0$ 的结果向上取整,例如 $5/(1-4) = -1$。
C++和Java中的整除默认是向零取整;Python中的整除//默认向下取整,因此Python的eval()函数中的整除也是向下取整,在本题中不能直接使用。
输入格式
共一行,为给定表达式。
输出格式
共一行,为表达式的结果。
数据范围
表达式的长度不超过 $10^5$。
输入样例:
(2+2)*(1+1)
输出样例:
8
思想
表达式求值:
如果当前元素是数字:压入
如果当前元素是(:压入
如果当前元素是):操作到(
如果当前 ...
好技巧
高数
【来自AC群的包包】
【来自AC群的a宝】
多元微分学中偏导连续推所有,可微推其他,剩下的条件啥也推不出。
充分必要性:
如果【A可以推出B】,则【A是B的充分条件,B是A的必要条件】
理解:A能够充分的推出B,而推出B的必须要的条件是A(A是条件,B是结果)
如果【A可以推出B,B推不出A】,则【A是B的充分不必要条件,B是A的必要不充分条件】
例子
下列条件中,3阶矩阵$A$可以相似对角化的充分不必要条件为:()
A.$A$有3个不相等的特征值。
B.
C.
D.
也就是选项能$\longrightarrow$条件,条件$\not\longrightarrow$选项。
反三角函数问题
分清下面两个式子:
(1)$\sin{(\arcsin{x})}=x$
(2)$\arcsin{(\sin{x})}=x$
对于(1)$\sin{(\arcsin{x})}=x$来说,由于$\arcsin{x}$的定义域为$[-1,1]$,$\sin{(\arcsin{x})}$的主值区域也就是$\sin{x}$的定义域为$[-\infty,+\infty]$,$\sin{(\a ...
DS
考试内容
一、数据结构的有关概念
考纲要求:
1.掌握数据结构的有关概念,理解逻辑结构与物理结构之间的关系。
2.掌握数据结构的几种基本结构。
3.掌握抽象数据类型的表示与实现方法。
4.熟悉算法分析的分析方法。
考点总结:
数据结构的几种基本结构
集合(不常考)
线性结构(1:1)
树形结构(1:n)
图形结构(m:n)
数据结构的基本概念和术语
标识符只能以英文字母或下画线开头,不能以数字开头。
数据结构包括逻辑结构和存储结构两个层次
线性结构:线性表 ,栈, 队列 ,双队列,串。
非线性结构:二维数组,树,图。
它们都可以顺序存储和链式存储。
数据
数据适用以描述客观食物且能够输入到计算机储存介质中能被计算机程序识别和处理的符号的总称,它是计算机加工的“原料”。
数据元素
数据元素是数据的基本单位。在计算机程序中常作为一个整体进行考虑和处理。
有时一个数据元素可以由若干数据项组成(此时往往把一个数据元素称为一条记录),数据项是具有独立含义的最小标识单位。
在某些情况下,往往也把数据元素简称为元素或结点。
数据项
数据项是数据结构中讨论的最小单位 ...