XVideoView
XVideoView.h 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182#ifndef XVIDEO_VIEW_H#define XVIDEO_VIEW_H#include <mutex>#include <fstream>#include "xtools.h"struct AVFrame;class XVideoView{public: enum Format { YUV420P = 0, NV12 = 23, ARGB = 25, RGBA = 26, BGRA = 28 }; enum RenderType { SDL = 0 }; static XVideoView* Create(RenderType ty...
ffmpeg
基础配置 头文件 include 库文件 lib lib/x86 x64 动态库文件 dll bin/x86 x64 调式执行和pdb路径 bin/x86 x64 源码项目路径 src/first_ffmpeg ffmpeg源码 tools 将文件配置进入项目中 (以Visual Studio 2017为例) YUV格式 YUV444 表示$4:4:4$的YUV取样。 每个像素都有独立的Y、U、V分量。 每一个像素Y占一个字节,U占一个字节,V占一个字节,因此每个像素占: $$1 (Y)×8 bits+1 (U)×8 bits+1 (V)×8 bits=24 bits/pixel (bpp)$$ 以$2\times 2$的图像为例 1234像素1:Y1, U1, V1像素2:Y2, U2, V2像素3:Y3, U3, V3像素4:Y4, U4, V4 YUV422 表示$4:2:2$的YUV取样。 每相邻两个像素每个像素占一个Y,共享一个U和一个V,因此两个像素占: $$2 (Y)×8 bits+1 (U)×8 bits+1 (V)×8 bits=32 bits$$...
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:是用于创建对话框的基类。通常用于短暂的交互,如...
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)$ 1234567891011...
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 *le...
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 12345678910111213141516171819202122232425...
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$: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162...
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{...










