算法
文章平均质量分 68
liuyuan185442111
主要为了增强记忆和方便查询,评论如果没有及时回复,还请见谅
展开
-
游戏视野计算
游戏地图是矩形的,将矩形分割成一个个紧邻的大小相等的方形格子,地图中每个对象必然归属于一个格子,每个格子维护了在这个格子里的所有对象。假设地图中所有格子共有row行,column列,那左下角格子的坐标是(0,0),右上角格子的坐标是(column-1,row-1)。每个格子周围的格子与其的偏移量都是相同的,可以先算出周围所有格子的偏移量来,确定某个格子后就可以快速计算出周围所有格子的坐标了。因为对象是用格子管理的,可以先搜集其所在格子周围的格子,然后再判断这些格子里的对象与之的距离是不是在视野距离内。原创 2023-11-24 20:30:00 · 319 阅读 · 0 评论 -
有序整数序列的压缩方法
转换的数字缺了个1,强迫症受不了,于是把所有负数的编码减去个2就可以了,然后发现负数的新编码的高7位和补码的低7位正好相反。是整数的内存表示,也就是补码,正数的补码就是它本身,负数的补码中会有很多前导1,用上面的方法会占用多个字节,所以只适用于无符号数。这种编码方式冗余度较高,每个字节都可以根据它的高位的若干比特确定它在整个二进制表示中的位置(比如是首个字节还是非首个字节),即使字节流中丢一些字节,也能定位出下个字符的起始字节。提出了Roaring Bitmap,表现比WAH,Concise更优秀,原创 2022-09-21 18:19:13 · 1424 阅读 · 0 评论 -
胜者树归并排序
胜者树是一棵完全二叉树,输入全在叶子节点。直接举个例子说明:上图中有3路,分别位于节点3、4、5,节点4、5进行比较胜者到节点2,节点2再和节点3比较胜者到节点1,节点1里就是最终的胜者。假如胜者来自节点5,从节点5再取一个新的元素,和节点4进行比较,一直上升到节点1,重复该过程直到3路中都没有元素即完成归并。下图也是类似。没找到别人的实现就自己写了个,用数组保存胜者树,实现如下:template <typename OutputIter, typename IterWrapper, ty原创 2021-04-07 17:58:15 · 198 阅读 · 0 评论 -
均匀的生成圆和三角形内的随机点
看到均匀的生成圆和三角形内的随机点,这里分别把均匀生成圆和三角形内随机点的方法先列出来: double radius = 1.0, x_center = 0.0, y_center = 0.0; mt19937 rng{random_device{}()}; uniform_real_distribution<double> uni{0, 1}; double d = radius * sqrt(uni(rng)); double theta = uni(rng) * (2 * M_P原创 2020-12-13 21:20:21 · 653 阅读 · 0 评论 -
多字符串匹配算法AC自动机原理与实现
Aho–Corasick算法是由Alfred V. Aho和Margaret J.Corasick于1975年发明的字符串搜索算法,多模字符串匹配算法之AC自动机—原理与实现一文写的极好,图画的也好。以下我做了全文摘抄,并用c++实现了一版。1. 应用场景—多模字符串匹配我们现在考虑这样一个问题,在一个文本串text中,我们想找出多个目标字符串target1,target2,……出现的次数和位置。例如:求出目标字符串集合{“nihao”,“hao”,“hs”,“hsr”}在给定文本"sdmfhsgns原创 2020-11-09 20:16:47 · 559 阅读 · 0 评论 -
Double-Array Trie以及libdatrie
Double-Array Trie树是目前 Trie 树各种实现中性能和存储空间均达到很好效果的实现,DAT 既可以像 Hash 一样作为简单的词典使用,也能非常高效的执行分词词典中必须的 Common Prefix Search 操作。自2003年7月起, 两个开源的日语分词系统 MeCab,ChaSen 都使用了 Darts。DAT 完整的实现比较复杂,An Implementation of Double-Array Trie介绍了一种实现。作者Theppitak Karoonboonyanan好像原创 2020-11-08 15:10:42 · 321 阅读 · 0 评论 -
单字符串匹配算法(Boyer Moore和Sunday)
字符串匹配(查找)算法是一类重要的字符串算法,给定一个长度为n的字符串text,要求找出text中是否存在另一个长度为m的字符串pattern(模式串)。主要方法有朴素算法,KMP算法,BM(Boyer Moore)算法,Sunday算法。朴素算法就是暴力匹配,KMP非常有名,但效率感人,不多说。关于Boyer-Moore算法和Sunday算法,《字符串匹配的Boyer-Moore算法》和《...原创 2019-03-11 12:07:32 · 329 阅读 · 0 评论 -
top n问题
最近看到游戏中刷排行榜的问题,是用multiset实现的,想到以前面试的时候这种问题的答案都是用堆,于是自己测试了一下,完整代码如下:#include &amp;amp;amp;lt;fstream&amp;amp;amp;gt;#include &amp;amp;amp;lt;iostream&amp;amp;amp;gt;#include &amp;amp;amp;lt;iterator&amp;am原创 2018-07-05 11:50:27 · 1897 阅读 · 0 评论 -
排列组合算法
.原创 2015-10-06 20:10:44 · 509 阅读 · 0 评论 -
寻找中位数(分治+双堆)
.原创 2015-09-12 19:11:53 · 3143 阅读 · 1 评论 -
一种星期计算方法和由此开始的有趣事情
.原创 2017-07-17 20:00:17 · 729 阅读 · 0 评论 -
常见排序算法
.原创 2015-02-11 19:05:13 · 853 阅读 · 1 评论 -
怎样在一定范围内获得比较理想的随机数
.原创 2015-07-05 06:55:44 · 530 阅读 · 0 评论 -
平方根的高效求解
.原创 2015-07-01 22:27:10 · 590 阅读 · 0 评论