学习资料
文章平均质量分 60
O-K
信息学的新手一枚
展开
-
从gcd到扩展中国剩余定理
本文由一个初三的小蒟蒻作,如有笔误,请指出:part 1:gcd gcd是指最大公约数,这在信息学中是一个十分基础的技能了,而求gcd的过程也十分的简单,核心就是一条式子: gcd(a,b)=gcd(b,a mod b) 而当b为0时,a就是最大公约数。证明就不写了吧(我才不告诉你我不会)。 代码如下:int gcd(int a,int b){ ...原创 2019-11-08 08:44:44 · 257 阅读 · 0 评论 -
可持久化数据结构
数据结构的可持久化,就是把一个数据结构的历史状态全都保存下来,从而能够快速查找之前出现过的某个操作的结果。当然这必然会带来很大的时间和空间消耗,因此优越的可持久化都会充分利用数据结构历史状态里的相似部分来减少时间和空间复杂度。显然有一个很裸的可持久化姿势:对数据结构中的每一个节点内嵌一个数据结构(比如平衡树或者STL里那些东西),然后以时间为关键字维护历史状态(显然会让时间复杂度里多一个log)....转载 2018-07-09 23:27:38 · 1419 阅读 · 0 评论 -
主席树例题
主席树真是神奇的物种!Orz一篇资料题意:给n、m 下面有n个数 (编号1到n) 有m个询问,询问的是上面的数的编号在[l,r]之间第k小的数 n、m的范围都是10 5 105 是主席树的入门题借此来学习一下主席树 主席数利用函数式线段树来维护数列,一般用来解决区间第k大问题空间时间的复杂度小于树套树(常数小)划分树也可以解决区间第k大问题,但划分树不支持修改,主席树可以(用树状...转载 2018-07-09 23:20:49 · 345 阅读 · 0 评论 -
主席树详解
树状结构之主席树 主席树搞了一个多星期TAT,,,,,,也只是大致领悟而已!!!主席树又称函数式线段树,顾名思义,也就是通过函数来实现的线段树,至于为什么叫主席树,那是因为是fotile主席创建出来的这个数据结构(其实貌似是当初主席不会划分树而自己想出来的另一个处理方式。。。。是不是很吊呢? ORZ...)不扯了,切入正题。主席树就是利用函数式编程的思想来使线段树支持询问历史版本、同时充分利用...转载 2018-07-09 23:19:01 · 770 阅读 · 0 评论 -
主席树学习
好久以前就想学习主席树这个黑科技,一直觉得很难,然后平时上课也没有什么好的时间,所以一直搁置到现在,最近遇到了一个比较简单,比较经典的问题,求区间第k小,比如poj2104,没有更新操作,只有查询操作,因为最近一直在学习分块思想,既然没有更新操作,我觉得可以用分块搞一下,但是一直tle,我的大致思想是把原序列分为为若干块,然后对每一块进行块内排序,每次 查询操作就是二分区间第k小元素设为x,jud...转载 2018-07-09 23:14:59 · 116 阅读 · 0 评论 -
谈一类分治算法的应用
从《Cash》分治算法的基本思想是将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同.求出子问题的解,就可得到原问题的解.分治算法非常基础,但是分治的思想却非常重要,本文将从今年NOI的一道动态规划问题Cash开始谈如何利用分治思想来解决一类与维护决策有关的问题:例一.货币兑换(Cash)问题描述小Y最近在一家金券交易所工作.该金券交易所只发行交易两种金券:A纪念...转载 2018-07-09 23:09:48 · 177 阅读 · 0 评论 -
分治片段
cdq分治是一种特殊的分治,在有些时候可以代替复杂的数据结构来解决一些问题。今天刚学了cdq分治,在这里以HDU1166为例(本来是树状数组或者线段树的模板题),来说一下我对cdq的理解。首先说一下cdq分治的优点,就是比好写(相对于某些数据结构),可以维护一些dp(暂时还不会)缺点是,要求题目的询问可以转化为离线处理。下面是一般cdq分治的大致步骤:1,将所有的操作(询问操作或者查询操作)先按照...转载 2018-07-09 23:09:04 · 225 阅读 · 0 评论 -
CDQ分治
CDQ分治与普通分治的区别 普通分治中,每一个子问题只解决它本身(可以说是封闭的) 分治中,对于划分出来的两个子问题,前一个子问题用来解决后一个子问题而不是它本身适用的情况 在很多问题中(比如大多数数据结构题),经常需要处理一些动态问题 然而对动态问题的处理总是不如静态问题来的方便,于是就有了分治 但使用分治的前提是问题必须具有以下两个性质:修改操作对询问的贡献独立,修改操作互不影响效果题目允许...转载 2018-07-09 23:02:30 · 609 阅读 · 0 评论 -
CDQ分治与整体二分
关于CDQ分治 CDQ分治,求的是三维偏序问题都知道的。 求法呢,就是在分治外面先把一维变成有序 然后分治下去,左边(l,mid)关于右边(mid+1,r)就不存在某一维的逆序了,所以只有两维偏序了。 这个时候来一波"树状数组求逆序对"的操作搞一下二维偏序 就可以把跨过中线的,左边更新右边的情况计算出来。 注意:只计算左边的操作对右边的询问的贡献! 然后左右两边递归处理就好了。 正...转载 2018-07-09 22:59:37 · 142 阅读 · 0 评论 -
简易CDQ分治教程&学习笔记
CDQ分治是我们处理各类问题的重要武器。它的优势在于可以顶替复杂的高级数据结构,而且常数比较小;缺点在于必须离线操作。 CDQ分治的基本思想和实现都很简单,但是因为没有人给本蒟蒻详讲,所以我对着几篇论文头疼了一个下午,最终在menci和sxysxy大佬的帮助下学会了CDQ分治。本文介绍一些非常simple的CDQ分治问题,目的在于帮助新手更快地入门CDQ分治,希望对大家有帮助。 转载请注明作...转载 2018-07-09 22:54:52 · 198 阅读 · 0 评论 -
A*,那个传说中的算法
下午,微信simplemain,老王又来找大伙儿聊技术了~~ 今天想跟大家聊的,是我们经常用到,但是却让大家觉得十分神秘的那个算法:A* 。 想必大家都玩儿过对战类的游戏,老王读书那会儿,中午吃完饭就会跟几个好哥们儿一起来两局红警。后来升级了,玩儿星际(是不是暴露年龄了,哈哈~~)。 玩儿的时候,就会发现这里面的兵(为了方便描述,把坦克、飞艇、矿车、龙骑等统称为兵),你只要指定好地点,他们就会自己...转载 2018-04-18 17:05:49 · 150 阅读 · 0 评论 -
A*算法详解
A*寻路初探原文:Patrick Lester翻译:Panic 2005年3月18日原文出处:A* Pathfinding for Beginners译者序 很久以前就知道了A*算法,但是从未认真读过相关的文章,也没有看过代码,只是脑子里有个模糊的概念。这次决定从头开始,研究一下这个被人推崇备至的简单方法,作为学习人工智能的开始。这篇文章非常知名,国内应该有不少人翻译过它,我没有查找,觉得翻译本...转载 2018-04-18 17:01:06 · 1492 阅读 · 1 评论 -
A*算法与启发函数
A*算法为什么叫这个名这个从wiki上看来的,一开始是57年提出的Dijkstra算法,然后64年Nils Nilsson提出了A1算法,是一个启发式搜索算法,而后又被改进成为A2算法,直到68年,被Peter E. Hart改进成为A*算法,为什么叫A*呢,因为原作者借鉴了统计学方面的一个*上标,在统计学中,一个变量加上 * 表示这个变量的最优解,所以作者认为他们是最优解,是前人(A算法)的集大...转载 2018-04-22 00:19:48 · 6471 阅读 · 0 评论 -
A*算法-翻译
Amit's A star Page中译文 译序这篇文章很适合A*算法的初学者,可惜网上没找到翻译版的。本着好东西不敢独享的想法,也为了锻炼一下英文,本人译了这篇文章。由于本人英文水平非常有限,六级考了两次加一块不超过370分,因此本译文难免存在问题。不过也算是抛砖引玉,希望看到有更多的游戏开发方面的优秀译作出现,毕竟中文的优秀资料太少了,中国的游戏开发者的路不好走。本人能力有限,译文中有小部分词...转载 2018-04-22 00:16:37 · 634 阅读 · 0 评论 -
a*自动寻路算法详解
本文根据其他博客基础上加工的,主要原因是感觉原博客举得例子不太好,很多细节感觉没有描述。A*算法主要是在父节点更新那个地方很容易误解,但是父节点的更新又是A*算法的核心,因为遍历到目标节点之后就是根据父节点回溯返回找到的路径的。开始:一只探路猫 让我们想象一下,有一款游戏,游戏中一只猫想要找到获取骨头的路线。“为什么会有一只猫想要骨头?!”你可能会这么想。在本游戏中,这是一只狡猾的猫,他想捡起骨头...转载 2018-04-22 00:13:58 · 1565 阅读 · 0 评论