自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(90)
  • 资源 (1)
  • 收藏
  • 关注

原创 Games202学习笔记

这是一个2-pass算法,需要对场景渲染两次,1-pass:从光源空间看过去,得到一张深度图,也就是shadow map2-pass:从摄像机处看过去,并将物体转换到计算shadow map深度的空间,得到物体在光源空间的深度,和shadow map中记录的值进行比较,来决定是否为阴影。自遮挡问题因为阴影贴图受限于分辨率,在距离光源比较远的情况下,多个片段可能从深度贴图的同一个值中去采样。图片每个斜坡代表深度贴图一个单独的纹理像素。

2023-10-10 15:57:37 476

原创 Games101

肯定不行,首先,这种行为有个专有名称 Blurred Aliasing(滤波走样),对一个有锯齿的图,模糊化后,图模糊了,但锯齿还在,然后再对这个有锯齿的图进行采样,得到的是一个即模糊,又有锯齿的图,如下图所示。来达到了高分辨率下的低抗锯齿效果,增加采样点使得计算出的三角形对像素的覆盖率更加接近真实的覆盖率,从而更精确的计算像素的颜色之,达到了抗锯齿的效果,和方法先模糊后采样不同,MSAA在抗锯齿处理后,并不会导致图像模糊。,且增大的计算量可以量化,比如划分了 4x4 的子区域,那就增加了16倍的计算量。

2023-09-19 18:56:08 161

原创 Modern C++

这样的代码其实变得很丑陋,因为程序员在使用这个模板函数的时候,必须明确指出返回类型。但事实上我们并不知道。

2023-03-20 22:38:49 1106 1

原创 C++/Cuda常用文件

计时工具TimclockTimeclock.h//// Created by Administrator on 2021/4/13.//#ifndef CPP11TIMER_TIMERCLOCK_H#define CPP11TIMER_TIMERCLOCK_H#include <chrono>class TimerClock {public: TimerClock(); virtual ~TimerClock() = default; void

2021-12-23 11:15:52 440

原创 LeetCode寻找小镇的法官和搜寻名人

997 找到小镇的法官题目信息在一个小镇里,按从 1 到 n 为 n 个人进行编号。传言称,这些人中有一个是小镇上的秘密法官。如果小镇的法官真的存在,那么:1.小镇的法官不相信任何人。2.每个人(除了小镇法官外)都信任小镇的法官。3.只有一个人同时满足条件 1 和条件 2 。给定数组 trust,该数组由信任对 trust[i] = [a, b] 组成,表示编号为 a 的人信任编号为 b 的人。如果小镇存在秘密法官并且可以确定他的身份,请返回该法官的编号。否则,返回 -1。解题思路这道

2021-12-19 21:36:28 140

原创 openglShder常用函数

#pragma once#ifndef SHADER_H#define SHADER_H#include <glad/glad.h>#include "glm/glm.hpp"#include <string>#include <fstream>#include <sstream>#include <iostream>class Shader {public: //程序ID unsigned int ID; //构造器读取

2021-12-11 16:11:53 223

原创 Ray Tracing

Ray Tracing文章目录Ray Tracing光线追踪Whitted-Style Ray Tracing求交点加速求交点Bounding Volumes 包围盒BVHBasic radiometry(辐射度量学)Radiant fluxintensityIrradianceRadianceBRDF 双向反射分布函数概率论回顾蒙特卡洛路径追踪蒙特卡洛积分路径追踪光线追踪1.光沿直线传播2.光线不会发生碰撞3.光路可逆性Whitted-Style Ray Tracing递归算法,包括了光

2021-12-07 16:38:20 130

原创 Games101观测变换(视图变换、投影变换)、光栅化

Games101文章目录Games101齐次坐标缩放变换与平移变换旋转操作观测变换正交投影透视投影屏幕空间光栅化三角形判断一个点在三角形内运算结果反走样问题采样理论采样前先做模糊操作频域滤波filtering = convolutionSampling 采样解决方法MSAA作业1作业2## 变换齐次坐标缩放变换与平移变换旋转操作3D旋转:观测变换定义相机的位置、视角:规定相机放置在(0,0,0)位置,看往-z方向,向上是y轴方向:正交投影透视投影齐

2021-12-06 21:18:59 1000

原创 利用L-M算法实现MVT拟合

利用L-M算法实现MVT拟合文章目录利用L-M算法实现MVT拟合前言输入输出数据描述输入数据算法思路L-M算法:快速线性拟合代码前言本工程主要负责读入原始的时间数据、时间校正表、能量校正表,根据双指数模型,利用L-M拟合出前3000个参数,然后取平均值,再对所有数据进行快速线性拟合,并进行能量与时间校正。双指数模型:原理:我们假设闪烁脉冲B、D、t0的值是一致的,只需要拟合A。即选取3000个脉冲,通过曲线拟合出3000个脉冲的A B D t0值,将这3000个脉冲的B D t0值取平均,得

2021-12-05 21:02:13 891

原创 动物PET的采集转换、排序与符合算法

动物PET的采集转换、排序与符合算法本工程主要负责将读入的chnnel原始数据,根据位置谱与能量谱,进行类型转化,得到位置信息、时间信息与能量信息,并根时间信息进行排序,主要是采用GPU归并排序进行快速排序,为后面的时间符合做准备。文章目录动物PET的采集转换、排序与符合算法输入输出结构描述输入数据描述输出数据描述转换算法算法思路核函数实现排序算法流程代码实现符合算法思路重要核函数calcDataBlockLengthintraBlockScanintraWarpScan输入输出结构描述输入数据

2021-12-01 11:19:39 396

原创 C++设计模式

C++设计模式从面向对象谈起底层思维: 语言构造、编译转换、内存模型、运行时机制抽象思维 :面向对象、组件封装、设计模式、架构模式深入理解面向对象向下: 深入理解三大面向对象机制1.封装,隐藏内部实现2.继承,复用现有代码3.堕胎,改写对象行为向上: 深刻把握面向对象机制所带来的抽象意义,理解如何使用这些机制来表达现实世界,掌握什么是好的“面向对象设计”重新认识面向对象理解隔离变化从宏观层面来看,面向对象的构建方式更能适应软件的变化,能将变化所带来的影响最小各司其职从微观层面

2021-11-30 19:43:10 942

原创 基于VSCode和CMake实现C/C++开发 | Linux篇

基于VSCode和CMake实现C/C++开发 | Linux篇文章目录基于VSCode和CMake实现C/C++开发 | Linux篇开发环境搭建GCC编译器编译过程g++重要的参数-g 编译带调试信息的可执行文件-O【n】优化源代码-l 和 -L 指定库文件 | 指定库文件路径-I 指定头文件搜索目录-Wall 打印警告信息-w 关闭警告信息-std=c++11-o 指定输出文件名-D 定义宏g++命令行编译生成库文件并编译静态库链接动态库链接GDB调试常用调试命令参数IDE-VSCode安装总结

2021-11-28 16:35:56 1095

原创 Linux兄弟连学习

Linux学习文章目录Linux学习学习注意事项Linux常用命令命令格式与目录处理命令ls总结学习注意事项**1.linux严格区分大小写2.linux中所有内容以文件形式保存,包括硬件 ****3.linux不靠扩展名区分文件类型**4.Linux所有的存储设备必须挂在之后用户才能使用,包括硬盘、U盘和光盘5.Windows下的程序不能直接在Linux中安装和运行Linux下各目录的作用服务器注意事项:远程服务器不允许关机,只能重启重启时,应该关闭服务不要再服务器

2021-11-21 21:33:49 969

原创 LeetCode 397整数替换

题目给定一个正整数 n ,你可以做如下操作:如果 n 是偶数,则用 n / 2替换 n 。如果 n 是奇数,则可以用 n + 1或n - 1替换 n 。n 变为 1 所需的最小替换次数是多少?题解 递归很显然,分情况讨论,如果n是一个偶数,那么结果就是 integerReplacement(n / 2) + 1;如果n是一个奇数,那么结果就是min(integerReplacement(n + 1), integerReplacement(n - 1)) + 1;但是对于这道题来说,有一个

2021-11-21 21:23:14 299

原创 Qt学习笔记

Qt学习笔记文章目录Qt学习笔记

2021-10-15 16:39:34 739

原创 LeetCode摆动序列

如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为 摆动序列 。第一个差(如果存在的话)可能是正数或负数。仅有一个元素或者含两个不等元素的序列也视作摆动序列。例如, [1, 7, 4, 9, 2, 5] 是一个 摆动序列 ,因为差值 (6, -3, 5, -7, 3) 是正负交替出现的。相反,[1, 4, 7, 2, 5] 和 [1, 7, 4, 5, 5] 不是摆动序列,第一个序列是因为它的前两个差值都是正数,第二个序列是因为它的最后一个差值为零。子序列 可以通过从原始序列中删除一些(也

2021-09-19 09:44:56 83

原创 C++2.0特性

C++11/14文章目录C++11/14Header filesVariadic Templates应用于Hash映射Tuple的实现部分细节Spaces in Template Expressionsnullptr and std::nullptr_tauto用法Uniform InitializationInitializer Lists提示:这里可以添加本文要记录的大概内容:Header filesC++标准库的header files不带副档名(.h),例如#include<ve

2021-09-18 21:02:20 332

原创 最短路径问题

最短路径问题分类单源路径与多源路径单源无权图最短路径解法:BFS有权图的最短路径算法框架:示例:访问v4:访问v2:访问v3:访问v5:访问v7:访问v6:无临接点,退出for循环;再次进入发现不存在V,则退出大循环,算法结束!从最后的结果可以清晰的看出,最短路径长度为6,路径为:1 -> 4 -> 7 -> 6多源最短路径程序框架:...

2021-09-16 11:20:48 64

原创 LeetCode解码方法

题目一条包含字母 A-Z 的消息通过以下映射进行了 编码 :'A' -> 1'B' -> 2...'Z' -> 26要 解码 已编码的消息,所有数字必须基于上述映射的方法,反向映射回字母(可能有多种方法)。例如,“11106” 可以映射为:“AAJF” ,将消息分组为 (1 1 10 6)“KJF” ,将消息分组为 (11 10 6)注意,消息不能分组为 (1 11 06) ,因为 “06” 不能映射为 “F” ,这是由于 “6” 和 “06” 在映射中并不等价。给

2021-09-14 19:48:33 375

原创 LeetCode最大正方形

题目在一个由 ‘0’ 和 ‘1’ 组成的二维矩阵内,找到只包含 ‘1’ 的最大正方形,并返回其面积。题解 动态规划可以利用动态规划进行求解,最重要的是转移方程,一种常见的做法是定义一个二维dp,大小要扩充一行一列,其中dp[i][j]表示以(i - 1, j - 1)为右下角的正方形属性。如果当前位置是0,则dp[i][j] = 0; 如果当前位置为1,假设当前面积为k * k,如果要增加正方形的面积到(k - 1 )*(k - 1),必须要满足dp[i - 1][j] == dp[i - 1]

2021-09-13 20:40:04 125

原创 LeetCode 回旋镖的数量

题目给定平面上 n 对 互不相同 的点 points ,其中 points[i] = [xi, yi] 。回旋镖 是由点 (i, j, k) 表示的元组 ,其中 i 和 j 之间的距离和 i 和 k 之间的距离相等(需要考虑元组的顺序)。返回平面上所有回旋镖的数量。题解 哈希 + 暴力枚举可以用一个哈希表用来存储距离,因为还与顺序有关,可用循环,让每一个结点都充当一次中间位置,记录有多少个结点与它距离相同,因为两端可以调换顺序,还与顺序有关,属于排列问题,加上公式:完整代码如下:class

2021-09-13 20:01:13 110

原创 LeetCode 有效的括号字符串

题目给定一个只包含三种字符的字符串:( ,) 和 *,写一个函数来检验这个字符串是否为有效字符串。有效字符串具有如下规则:1.任何左括号 ( 必须有相应的右括号 )。2.任何右括号 ) 必须有相应的左括号 ( 。3.左括号 ( 必须在对应的右括号之前 )。4.* 可以被视为单个右括号 ) ,或单个左括号 ( ,或一个空字符串。5.一个空字符串也被视为有效字符串。题解 栈显然,这种题目肯定要用栈,用栈记录下标会让题目变得十分简单!建立两个栈,一个用来记录左括号的下标,另一个用来记录*的下标!

2021-09-12 11:47:38 186

原创 LeetCode回溯(N皇后与解数独)

51 N皇后n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。解法 回溯法N皇后要注意两个皇后不能同时出现在同一行、同一列、同一左斜线和同一右斜线。同一行可在递归时完成记录,不需要额外的容器记录,同一列、左斜线和右斜线都是需要容器专门去记录,可以观察到斜线容器的长度为2 * n -

2021-09-11 15:18:22 111

原创 LeetCode省份数量

题目 省份数量有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市 c 间接相连。省份 是一组直接或间接相连的城市,组内不含其他没有相连的城市。给你一个 n x n 的矩阵 isConnected ,其中 isConnected[i][j] = 1 表示第 i 个城市和第 j 个城市直接相连,而 isConnected[i][j] = 0 表示二者不直接相连。返回矩阵中 省份 的数量。题解 DFS框架:

2021-09-11 09:45:17 88

原创 LeetCode验证回文字符串||

题目 验证回文字符串给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。题解 双指针题目并不是很难,思路也很清晰,一个指针l从左往右,一个指针r从右向左,如果两个指针的值不相等,就分为两部分,[l + 1, r] || [l, r - 1]任意一部分为回文字符串都可以!一开始我并没有写成函数的形式,用了if语句,处理边界条件时候比较难受,所以要在合适的时候写函数,会简化很多!附完整代码:class Solution {public: bool judge(string

2021-09-10 16:08:17 93

原创 LeetCode最小覆盖字串

给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 “” 。注意:对于 t 中重复字符,我们寻找的子字符串中该字符数量必须不少于 t 中该字符数量。如果 s 中存在这样的子串,我们保证它是唯一的答案。题解 滑动窗口本题主要使用滑动窗口进行求解,即两个指针l与r都是从最左端向最右端进行移动,并且l的位置一定在r的左边或者重合,使用了长度为128容器映射字符,cnt代表目前每个字符缺少的数量,flag表示字符在

2021-09-10 15:05:57 131

原创 LeetCode环形链表

题目 环形链表||给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意,pos 仅仅是用于标识环的情况,并不会作为参数传递到函数中。说明:不允许修改给定的链表。进阶:你是否可以使用 O(1) 空间解决此题?题解 哈希哈希的话比较简单,建立一个set<ListNode*> 的哈希,遇见一个没有出现过的结点就插入

2021-09-10 11:15:49 69

原创 LeetCode验证二叉搜索树

验证二叉搜索树给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。有效 二叉搜索树定义如下:节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树题解 递归验证一棵树是否为二叉搜索树,根据二叉搜索树的特点,除了根节点的每一个节点都会有一个取值范围[lower, upper];可以根据这个条件写出递归的终止条件:附代码:/** * Definition for a binary tree node. *

2021-09-09 20:14:14 151

原创 LeetCode非递减序列

题目 非递减序列给你一个长度为 n 的整数数组,请你判断在 最多 改变 1 个元素的情况下,该数组能否变成一个非递减数列。我们是这样定义一个非递减数列的: 对于数组中任意的 i (0 <= i <= n-2),总满足 nums[i] <= nums[i + 1]。题解 贪心贪心主要是体现在选择符合条件最小的那一个数字。具体思路:最多只允许修改一次数据,所以可以设置一个标志位flag,修改完一次以后,flag = false,再有不符合条件的数据的话就直接返回false;当遇到

2021-09-09 19:35:45 184

原创 LeerCode贪心

题目给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。注意:可以认为区间的终点总是大于它的起点。区间 [1,2] 和 [2,3] 的边界相互“接触”,但没有相互重叠。题解 贪心先对数据进行排序,设置一个end结点;如果下一个区间的第一个值小于当前end,说明两区间一定有交集,此时ans + 1,同时尽可能地让end小,才能最少的与下一些序列重叠;如果下一个区间的第一个值大于end,说明两段没有交集,此时更新end为这个区间的末尾值。完整代码:class Solutio

2021-09-05 22:57:51 58

原创 LeetCode好叶子结点的数量

好叶子结点的数量给你二叉树的根节点 root 和一个整数 distance 。如果二叉树中两个 叶 节点之间的 最短路径长度 小于或者等于 distance ,那它们就可以构成一组 好叶子节点对 。返回树中 好叶子节点对的数量 。题解 递归建立两个容器left,right分别记录以该root为根节点的深度值,如果其中得到的值l+r<=distance就是一对好节点! res += countPairs(root->left, distance); res += countPa

2021-09-02 16:55:00 88

原创 根据身高重建队列

根据身高重建队列假设有打乱顺序的一群人站成一个队列,数组 people 表示队列中一些人的属性(不一定按顺序)。每个 people[i] = [hi, ki] 表示第 i 个人的身高为 hi ,前面 正好 有 ki 个身高大于或等于 hi 的人。请你重新构造并返回输入数组 people 所表示的队列。返回的队列应该格式化为数组 queue ,其中 queue[j] = [hj, kj] 是队列中第 j 个人的属性(queue[0] 是排在队列前面的人)。。题解 先排序再建立队列思路解题过程:先对

2021-08-31 10:52:17 60

原创 分割等和子集

分割等和子集给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。题解 动态规划如果可以等分成两个和相同的子集,总和一定是偶数,可以根据这一性质作为条件对一部分进行判断返回;建立一个布尔类型的dp容器,其中dp[i]中的值表示dp[i]是否存在子集的和为i,最后返回dp[sum / 2]里面的值即可;先对num[0]进行判断,如果小于等于目标值,则dp[nums[0]] = true;在循环的时候利用利用dp[j] = dp[j]

2021-08-30 16:54:23 124

原创 拓扑排序及课程表问题

拓扑排序概念对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边<u,v>∈E(G),则u在线性序列中出现在v之前。通常,这样的线性序列称为满足拓扑次序(Topological Order)的序列,简称拓扑序列。简单的说,由某个集合上的一个偏序得到该集合上的一个全序,这个操作称之为拓扑排序。例子 计算机专业上课拓扑序:如果图中从v到w有一条有向路径,则v一定排在w之前,满足此条件的顶

2021-08-30 10:14:09 282

原创 LeetCode 回文串问题

回文子串给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。题解1 中心扩展方法中心拓展,说白了,就是挨个遍历,只不过,中心可能是1个字符也可能是2个字符而已,不可能出现3个字符作为中心的情况,因为3个字符作为中心的话,他就是回文了,等于1个字符作为中心的情况.完整代码如下:class Solution {public: int countSubstrings(string s) {

2021-08-29 15:13:42 213

原创 LeetCode 对链表进行插入排序

题目 对链表进行插入排序3题解 插入排序链表的插入排序,重点在于记录前一个和后一个节点,链表之间的关系处理!/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {}

2021-08-29 14:14:15 86

原创 LeetCode链表排序

链表排序题解 归并排序

2021-08-29 13:40:00 88

原创 LeetCode最长连续序列

题目 最长连续序列题解 哈希表

2021-08-29 13:34:42 194 1

原创 LeetCode 矩形 地图分析 广度优先搜索

题目 矩形给定一个由 0 和 1 组成的矩阵 mat ,请输出一个大小相同的矩阵,其中每一个格子是 mat 中对应位置元素到最近的 0 的距离。两个相邻元素间的距离为 1 。题解 广度优先搜索本题的本质就是寻找离1最近的0,那么就可以从0出发进行搜索,一开始利用一个队列把所有的0都压入队列,并把1的位置改为-1表示未访问过。如果遇到符合要求的:表示它为当前距离+1if(pos_x >=0 && pos_x < row && pos_y >=

2021-08-25 21:03:47 176

原创 LeetCode蓄水

题目 蓄水给定 N 个无限容量且初始均空的水缸,每个水缸配有一个水桶用来打水,第 i 个水缸配备的水桶容量记作 bucket[i]。小扣有以下两种操作:升级水桶:选择任意一个水桶,使其容量增加为 bucket[i]+1蓄水:将全部水桶接满水,倒入各自对应的水缸每个水缸对应最低蓄水量记作 vat[i],返回小扣至少需要多少次操作可以完成所有水缸蓄水要求。注意:实际蓄水量 达到或超过 最低蓄水量,即完成蓄水要求。问题描述:具体出处题解 枚举我们枚举「蓄水」的次数 k,那么对于容量为 v 的水缸

2021-08-25 17:11:23 311

笔记01_面向对象高级编程(上).pdf

笔记01_面向对象高级编程(上).pdf

2021-05-26

空空如也

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

TA关注的人

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