自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 pointnet2InferenceOwnModel - 使用pointnet2推理自己的模型(以obj模型数据为例)

思路:将自己的一个obj模型,包装成为s3dis的一样的格式。

2022-11-16 16:24:49 362 1

原创 字符的基本处理

【代码】字符的基本处理。

2022-08-24 16:13:19 233

原创 滑动窗口2[lc]

priority_queue经常用 或者st、edhttps://leetcode.cn/problems/constrained-subsequence-sum/1499findMaxOfEquationInVec 满足不等式的最大值1 题目https://leetcode.cn/problems/max-value-of-equation/1610visiblePoints 可见顶点的最大数目1 题目https://leetcode.cn/problems/maximum-number-of

2022-07-10 11:12:52 218

原创 lc回溯1

回溯的思想在于回这个字,以最经典的八皇后作为例子:当然,回溯也有当前搜索的解空间的情况,比如对于棋盘就是目前已经放置的所有的位置,可以使用记忆化搜锁下面的题目中0698就使用了https://leetcode.cn/problems/partition-to-k-equal-sum-subsets/1 解题思路:2 1.2的时机例子如下:典型的多余的for循环:1取到1,2取到2,那么当最外层的2取到2,1又取到1,那不就是重复计算了嘛标准的带有返回值的写法:我写的回溯不喜欢带返回值,后面是带有返回

2022-07-04 20:58:47 166

原创 将boost和qt编译在一起报错:boost-1_72/boost/mpl/bitand.hpp(24): parse error at “(“的折中解决办法

按照如下方式修改bitand.hpp#ifndef Q_MOC_RUN你的原来的bitand.hpp#endif // Q_MOC_RUN

2022-06-25 16:14:34 504

原创 cpp调用restapi的简单尝试 - restc-cpp client

restClient in cpp: https://github.com/jgaa/restc-cppopenssl下载:https://github.com/CristiFati/Prebuilt-Binaries/blob/master/OpenSSL/v1.1.1/OpenSSL-1.1.1o-Win-pc064.zip个人示例:https://mock.apifox.cn/m1/1153222-0-default/roomlist4 示例代码以及测试安装docker,执行restc-cpp的

2022-06-21 17:29:48 380

原创 trajan 塔杨算法 求割点,割边

t[i][j]

2022-06-21 12:47:11 158

原创 dijstra迪杰斯特拉算法

t[i][j]

2022-06-21 12:46:29 145

原创 learnOGL 结合代码看一些光照模型以及高级光照

直接看这个shader:2 gamma矫正一句话理解他: 物理显示器显示(线性空间)的颜色亮度为0.5,人看到的亮度会为0.5^2.2,也就是更暗了,于是需要先做1/2.2次幂的拔高在使用了gamma校正之后,另一个不同之处是光照衰减(Attenuation)。真实的物理世界中,光照的衰减和光源的距离的平方成反比。但是由于本身有gamma矫正,所以我们就用双曲线函数衰减就行了,因为最后会乘以2.2次幂!约等于距离平方反比3 阴影映射(定向阴影贴图技术)(基于光照空间的深度缓冲和正常渲染空间的深度缓冲做

2022-06-20 22:02:03 237

原创 杨氏矩阵(young table)

t[i][j]

2022-06-16 17:43:40 125

原创 games101中的离线渲染 - 光线追踪

Whitted-style光线追踪算法是由Turner Whitted在1980年提出的,用于解决复杂曲面的反射折射效果。最终每个像素的颜色(相比于blin phong 模型多了反射和折射):fragColor = 直接光照颜色 + 反射光带来的颜色 + 折射光带来的颜色。核心思想:利用了光路是可逆的,由浅入深主要有以下两个步骤:如下图:从相机作为原点出发,连接像素发射一条光线ray,假设碰撞到物体就结束(不反射,不折射3),那么直接光源照射到碰撞到物体的点,然后逆着ray到对应的像素,就得到了对应像素的

2022-06-14 16:40:58 353

原创 [MVP viewport 相机详解]实时渲染里的光线追踪 - games202实时渲染课后作业5

回顾基于蒙特卡罗中的rayTracing,大致看一下其计算量:当图像目标设置为768768,然后每个像素sample32次(蒙特卡罗的经典方式),每次光线进入到下一层的概率为0.25,那么平均castray会被计算多少次呢?32 * (10.25 + 2 * 0.125 + 3 0.0625 + …) 大概就是0.7532 = 24次,也就76876824的castRay的计算,花费的时间大概为23min,效果为:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YWO9Zm6

2022-06-14 16:39:21 561

原创 二分搜索1

二分

2022-06-11 14:23:10 74

原创 lcBFS1 题集

1 BFS最关键的是:- bfs本身的特性,一个是按照层数往下遍历,一个是可以决定是否遍历完当前层再往下遍历- bfs的队列初始化即为bfs的搜索起点,然后注意状态问题,当每个节点带有状态以后,bfs的visited变量就不仅仅是node的编号,应该是node的编号 + “当前状态”,具体参考(0864,0847)- 注意:遍历当前层,需要把size记录成临时变量,因为curLevel会加入新元素- 注意:入队后就需要置为visited,否则可能重复入队bfs的遍历本质上可以看成当前点,到所有后

2022-05-30 13:15:32 125

原创 lc 动态规划[含有一个记忆化搜索]

1 动态规划从背包问题开始:https://zhuanlan.zhihu.com/p/93857890区间dp等等:https://oi-wiki.org/dp/interval/最重要的是,能够用dp数组,1到3维度一般,去表示最终结果,对于具体的题目,dp[i][j]表示什么意思,将成为解答的关键很多动态规划都可以使用带记忆化的搜索去做2 例题0410splitArrayMinMax 分割出最小的子数组最大值1 题目https://leetcode-cn.com/problems

2022-03-20 19:23:51 1457

原创 algoHierHolzerEulerPath - 半欧拉图/欧拉图的欧拉路径计算

1 欧拉图基本概念:圈:任选图中一个顶点为起点,沿着不重复的边,经过不重复的顶点为途径,之后又回到起点的闭合途径称为圈。欧拉路径:通过图中所有边一次且仅一次遍历所有顶点的路径称为欧拉(Euler)路径;欧拉回路:通过图中所有边一次且仅一次行遍所有顶点的回路称为欧拉回路;欧拉图:具有欧拉回路的图称为欧拉图;半欧拉图:有欧拉路径但没有欧拉回路的图称为半欧拉图。欧拉图与半欧拉图的判定:G是欧拉图 ⇔ G中所有顶点的度均为偶数 ⇔ G是若干个边不重的圈的并。G是半欧拉图

2022-03-07 15:41:51 1014

原创 mergeHeapQuickSort - 三种基础排序算法对比

三种基础排序归并排序堆排序快速排序1 题目:https://leetcode-cn.com/problems/sort-an-array/2 解题思路:1 分别详细解释 快速排序,归并排序,堆排序1.1 快速排序算法核心:选择一个数字,然后将比他大的都移动到他左边,比他小的都是右边,然后分别对左侧区域和右侧区域递归执行即可速度和稳定性:在单调情况下达到最坏,为O(n**2),不稳定的原因,中枢元素会和最后一个比他小的数字交换位置(以此将左侧分为比他小的,右侧比他大的);1

2022-03-07 15:39:46 422

原创 lcDFS1 深度优先遍历1[记忆化搜索]

1 深度优先遍历最常见的优化:1 记忆化搜索: 使用hash记录遍历起点对应的值,然后直接从hash中获得,避免重复计算2 常见算法:对于欧拉图和半欧拉图算欧拉路径:hierholzer算法2 例子0332HierholzerToFindEulerPath 找欧拉路径1 题目https://leetcode-cn.com/problems/reconstruct-itinerary/2 解题思路hierholzer算法参考:https://www.geeksforgeeks.

2022-03-07 15:38:39 290

原创 有序集合 1[set][map][priority_queue]

1 有序集合泛指set, map, pirority_queue等能够按照key进行排序,然后使用lower_bound和upper_bound来进行log(n)复杂度查询的基础数据结构(注意priority_queue仅能够在堆顶进行操作)示例如下: set<int, std::less<int>> spareServers;<被作者省略> // request distribute, find the server

2022-02-22 16:25:51 694

原创 单调栈 题集 1 [Monostack]

title: lcMonostack - 单调栈date: 2022-01-12 14:07:18tags:lcalgoPraccatogories:lcalgoPrac单调栈其基本特性:1 单调栈的极值性质:单调递减栈的第一个字符为目前最大的元素,单调递增栈则相反; 关于目前的解释,由于单调栈是遍历整个数组出栈入栈的过程,假设目前遍历到节点i,则arr[:i]为目前单调栈遍历过的元素们,单调栈递增递减栈的第一个数字分别为arr[:i]的最大最小值2 单调栈的单调性:单调栈内.

2022-01-12 14:23:31 369

原创 摆脱macos难受的任务切换

可以先cmd+tab选定程序,然后摁住cmd松开tab,把摁住cmd的大拇指顺势摁下option,这很难受,直接使用alt-tab和windows保持一样的逻辑!github 的开源项目: brew install alt-tab

2022-01-09 21:48:07 285

原创 字典树&前缀树 1 [Trie]

1 字典树、前缀树、Trie将一个单词列表使用words组装起来,实现如下:(仅含有小写的字典),可以在log(m)时间内查询一个单词是否在字典中。1.1 可能的小技巧1 一些可以想到的优化:1.1 如果对一个长串反复查询,则使用一个node指针指向当前查询位于Trie里面的位置,避免反复查询相同的前缀1.2 如果对一个长串反复查询,尝试使用hash记录尾串的目标信息,避免对尾串反复查询1.3 逆序建树,构建后缀树等等,见本篇最后两个例子class Trie {public:

2021-12-30 21:22:32 475

原创 拉宾-卡普算法详解以及示例[rabin-karp]

0 拉宾-卡普算法来自wiki在计算机科学中,拉宾-卡普算法(英語:Rabin–Karp algorithm)或卡普-拉宾算法(Karp–Rabin algorithm),是一种由理查德·卡普与迈克尔·拉宾于1987年提出的、使用散列函数以在文本中搜寻单个模式串的字符串搜索算法单次匹配。该算法先使用旋转哈希以快速筛出无法与给定串匹配的文本位置,此后对剩余位置能否成功匹配进行检验。此算法可推广到用于在文本搜寻单个模式串的所有匹配或在文本中搜寻多个模式串的匹配。1 算法本身主要思想1 朴素匹配: te

2021-12-28 22:04:29 1511

原创 Binary Indexed Tree(二元索引数)(树状数组)

1 Binary Indexed Tree(二元索引数)(树状数组)1 用途:以O(log n)时间复杂度得到任意区间和。同时支持在O(log n)时间内支持动态单点值的修改。空间复杂度O(n)。2 出处:Peter M. Fenwick. A new data structure for cumulative frequency tables. Software: Practice and Experience. 1994, 24 (3): 327–336. doi:10.1002/spe.4380

2021-12-15 19:19:15 597

原创 递归和二叉搜索树 1 (binary search tree & recursive way)

0 递归和bst的基础1 构建bst 0108. 将有序数组转换为二叉搜索树1 题目https://leetcode-cn.com/problems/convert-sorted-array-to-binary-search-tree/2 解题思路1 AVL tree最主要的特性在于,任何子树的左子树和右子树的高度差不超过1,所以方法为:1.1 每次找到数组中间的值作为root,然后两边分别作为左右子树,左边都比root小,右边都大,刚好满足AVL要求/** * Definitio

2021-12-14 20:39:07 832

原创 并查集题集2

1 并查集关键理解: 并:是通过一条边将两个没有公共子集的集合合并,查:每个子集的所有子项对应的root是相同的class DSU{ public: vector<int> parent; vector<int> subTreeSize; DSU(int n) { parent.resize(n); subTreeSize.resize(n);

2021-12-06 10:00:20 171

原创 并查集题集1 & dfs & bfs & unionMerge & 二分图

0 一些基础判断整个图是否连通使用dfs判断整个图是否连通: // if not connected, return false vecctor<int> stack = {0}; vector<bool> vis(graph.size(), false); vis[0] = true; int visCnt = 1; // dfs to check if connected

2021-11-29 21:17:39 168

原创 全排列&字典序生成算法

0 全排列算法0.1 全排列实现1 一个排列,其优先交换靠右的位置的数字来获得下一个排列,比如1 2 3,他下一个必定是交换2 3,1不会参与其中,2 意识到一个排列,左侧属于高位,打个比方,若全排列对应的都有一个数字表示该排列的大小,那么左侧值越大,那么排列越大全排列(非递归求顺序)算法  1、建立位置数组,即对位置进行排列,排列成功后转换为元素的排列;  2、按如下算法求全排列:   设P是1~n(位置编号)的一个全排列:p = 

2021-11-26 13:13:19 365

原创 influxDB && docker-compose安装 && 基本操作以及语法

1 docker-compose安装version: "3.4"# https://docs.influxdata.com/influxdb/v1.7/administration/configservices: influxdb: image: influxdb:1.7-alpine environment: - INFLUXDB_ADMIN_ENABLED=true - INFLUXDB_ADMIN_USER=${INFLUXDB_ADMIN_USE

2021-11-23 15:15:37 1313

原创 前缀和题集1

1 前缀和 vector<int> prefSum {nums[0]}; for(int i = 1; i < nums.size(); ++i) { prefSum[i] += (nums[i] + prefSum.back()); }1546最大非重叠数组1 题目https://leetcode-cn.com/problems/maximum-number-of-non-overlapping-subar

2021-11-18 15:28:06 574

原创 滑动窗口题集1

1 滑动窗口priority_queue经常用0480 滑动窗口中位数1 题目https://leetcode-cn.com/problems/sliding-window-median/2 解题思路1 使用一个multiset维护当前窗口,1.1 不使用priority_queue的原因,无法删除元素1.2 不使用map/set的原因,不能含有重复元素2 对于窗口,维护一个中位数指针,注意到中位数指针在每一次窗口移动只会发生几种情况2.1 向左,向右,不动2.2 分类讨论清

2021-11-18 15:25:15 103

原创 stronglyConnectedComponents 强联通分量求法 - kosaraju & tarjan & gabow & 并查集

1 强联通分量解释SCC(stronglyConnectedComponents) 对于G(v, e)的一个子图中,其任何两个顶点都存在一个path相互到达;2 图的拓扑排序拓扑排序的核心思路还是利用深度优先搜索,排序的基本思想为深度优先搜索正好只会访问每个顶点一次,如果将dfs的参数顶点保存在一个数据结构中,遍历这个数据结构就能访问图中的所有顶点,而遍历的顺序取决于这个数据结构的性质以及是在递归调用之前还是递归调用之后保存。1 前序: 在递归调用之前将顶点加入队列 —- pre()方法2 后序

2021-11-15 13:46:05 579

原创 max flow&min cut最大流-最小割

1 最大流-最小割本身含义首先 起始点 s, 终止点 t, 从s->t的所有通路中,能够流过来的最大流量就是最大流,这里举个例子:比如有如下的图:1 -> 2 管道是5的容量,2 -> 4 管道是4的容量,1 -> 3 管道是3的容量,3 -> 4 管道是6的容量,那么从1->4的最大流,就是4 + 3 = 7最小割:最小割是指,从图中移除一些边的集合以达到隔断从s到t的目的,成为一个图割,然后最小割,就是所有图割中,边权(管道的流量)之和最小的一个图割

2021-09-15 19:43:35 346

原创 经纬度转WGS84坐标

1 cesium/source/core/cartesian3.js 经纬度转WGS84坐标代码:直接去github看cesium的源码实现就行了:Cartesian3.fromRadians = function ( longitude, latitude, height, ellipsoid, # default is WGS84 result) { //>>includeStart('debug', pragmas.debug); Check.typeOf

2021-09-12 21:05:53 1998

原创 java注解生命周期 & 简单工厂以及策略设计模式[java annotation][简单工厂][策略模式]

1 自定义注解 Annotation这里给出自定义注解的例子:package com.soul.weapon.algorithm.annotation;import java.lang.annotation.*;@Target({ElementType.TYPE, ElementType.FIELD})@Retention(RetentionPolicy.RUNTIME)@Documented@Inheritedpublic @interface WeaponAlgorithm {

2021-09-12 21:04:28 224

原创 dockerManual docker常用命令

0 相关脚本1 获取对应的镜像的所有历史版本: curl https://registry.hub.docker.com/v1/repositories/centos/tags21 docker cli 命令镜像管理1.1 常见命令https://docs.docker.com/engine/reference/commandline/docker/命令说明docker search myphp | grep admin搜索镜像docker pull mysql:l

2021-09-12 20:58:12 92

原创 std::thread传入引用值需要使用std::ref[ref][cpp]

1 std::thread传入引用值需要使用std::refstd::ref的说明: Constructs an object of the appropriate reference_wrapper type to hold a reference to elem.其实主要是,如果要向thread传参的时候,该参数在线程内会被修改,需要用这个ref作为一个wrapper将对象包裹成为一个引用然后传入。void main() { while(1){ ...<省略>

2021-08-28 17:43:28 1319

原创 pangolin动态点云展示示例[pangolin][动态点云]

0 结果展示1 下载编译pangolin的库https://github.com/stevenlovegrove/Pangolin.git该库中本身含有libpng, libjpg, libzip2 当需要调用该库时:调用时依赖如下:(本项目并未上传所有依赖,部分依赖需要单独下载然后放到thirdparty目录里)# includeF:\prjs\ORB_SLAM3_Fix\ORB_SLAM3\Thirdparty\Pangolin\include;F:\prjs\ORB_SLAM3_Fix

2021-08-28 17:42:26 931

原创 reinterpret_cast<> 理解以及典型应用[cpp][类型转换]

1 ffmpeg 解帧ffmpeg -i DJI_20210615164633_0003_W.MP4 -r 3 images/%4d.jpg2 reinterpret_cast<> 理解以及典型应用:对于其他的例如static_cast<>等的应用,参考:http://www.cplusplus.com/doc/tutorial/typecasting/以下引用自: https://stackoverflow.com/questions/573294/when-to-use

2021-08-28 17:40:10 418

原创 Clion在win10使用Glog & 日志打印到标准输出[glog][打印到标准输出]

glog使用:项目地址:[email protected]:xychen5/tryGlog.git推荐使用类似于clion的ide,然后打开该项目,即可编译运行。1 主要作用:能够将glog的日志在cmd中打印主要调用了函数: google::SetStderrLogging(google::INFO); // print the logs whose severity > [info]2 output:样例输出代码如下:I0718 16:09:07.626883 18628 ma

2021-07-18 16:25:41 1132

空空如也

空空如也

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

TA关注的人

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