随笔分类 -  OI

摘要:coci2018中一些题目的题解 plahte,san,usmjeri,garaza,dojave,sazetak,vode,krov,pictionary,planinarenje,cover,kotrljanje,dostavljac,priglavci 阅读全文
posted @ 2018-10-06 20:39 Darksun2010 阅读(1379) 评论(1) 推荐(0) 编辑
摘要:约定:以线性表a表示二叉堆H,a以0标号。 通常,堆的删除发生在堆H顶,即a[0]的位置,但是如果想要删除其他节点呢?在维护堆性质的前提下,很难用常规的方法解决。此时可以使用二叉堆的懒惰标记。 这样操作,总时间复杂度仍与一般二叉堆相同,但是相对不平衡。 UPD 2016/2/2 15:50: 伪代码 阅读全文
posted @ 2016-02-01 12:51 Darksun2010 阅读(321) 评论(0) 推荐(0) 编辑
摘要:Fractional Cascading算法是用于将零散的多个数组(亦可理解成比较高维的空间)中的数据的二分查找速度增加,用的是空间换时间的方法。然而这种方法并不是很好懂,而且中文文献很少。在这里介绍一种简单的伪Fractional Cascading算法。其实它与Fractional Cascad 阅读全文
posted @ 2015-12-05 17:34 Darksun2010 阅读(1164) 评论(5) 推荐(0) 编辑
摘要:题目 农夫约翰决定去做一个环游国家旅行,为了不让他的奶牛们感到孤单,于是他决定租一辆货车带领他的奶牛们一起去旅行。这辆货车的油箱最多可以承载G 个单位的油,同时为了简化问题,规定每一个单位的油可以行使一个单位的距离。约翰从起点出发到终点总共要经过D 个单位的距离。约翰知道自己很有可能要在中途的过程中 阅读全文
posted @ 2015-11-01 18:33 Darksun2010 阅读(417) 评论(0) 推荐(0) 编辑
摘要:艰难取舍(seq.cpp/c/pas) 【题目描述】 由于hyf长得实在是太帅了,英俊潇洒,风流倜傥,人见人爱,花见花开,车见车载。有一群MM排队看hyf。每个 MM都有自己独特的风格,由于 hyf有着一颗包容的心,所以,什么风格的MM他都喜欢…… 但是,hyf有一个特别的要求,他不希望总是看到风格 阅读全文
posted @ 2015-10-19 15:34 Darksun2010 阅读(310) 评论(0) 推荐(0) 编辑
摘要:传说,Pascal中有一个函数——fillchar。这是高手们装*用的利器,也是大家的神器(大家好才是真的好)。 神器介绍: 百度百科说:“Fillchar是Turbo/Borland Pascal的System单元的一个标准过程,它的使用格式是:FillChar(var X; Count: Wor 阅读全文
posted @ 2015-06-21 22:48 Darksun2010 阅读(1257) 评论(2) 推荐(1) 编辑
摘要:树状数组(BIT)是一个查询和修改复杂度都为log(n)的数据结构,主要用于查询任意两位之间的所有元素之和,其编程简单,很容易被实现。而且可以很容易地扩展到二维。让我们来看一道很裸的二维树状数组题: 在一个“打鼹鼠”的游戏中,鼹鼠会不时地从洞中钻出来,不过不会从洞口钻进去(鼹鼠真胆大……)。洞口都在 阅读全文
posted @ 2015-04-05 18:17 Darksun2010 阅读(1627) 评论(0) 推荐(0) 编辑
摘要:素数的验证,可能会被作为所谓“循环练习”的题目。因为其算法实在太简单(不知道直接暴力循环能不能算一种算法)。经典的方法就是试除,用循环变量i从2开始到n-1,如果有取模为0的,就直接return false。到最后,还没有模出0,就return true。这个算法也可以优化n-1为sqrt(n)。原 阅读全文
posted @ 2015-04-03 20:24 Darksun2010 阅读(1668) 评论(0) 推荐(0) 编辑
摘要:Learn from God LZW,worship... 多重背包(MultiplePack): 有N种物品和一个容量为V的背包。第i种物品最多有n[i]件可用,每件费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。 这种背包问题与完全背包 阅读全文
posted @ 2015-03-15 21:02 Darksun2010 阅读(1178) 评论(0) 推荐(0) 编辑
摘要:图的边的表示方法,有很多。像邻接矩阵、边集数组、邻接表等。其中,第三者的时空复杂度应该是最优的。但是实现却需要比较麻烦的链表,但是我们也可以用数组来模拟链表,使编程的复杂度进一步降低。 这种算法:遍历所有的边的时间复杂度是O(M),M表示边的总数,空间复杂度也是O(M)。在最坏情况下,查询i与j是否 阅读全文
posted @ 2015-03-08 18:59 Darksun2010 阅读(2050) 评论(0) 推荐(0) 编辑
摘要:位运算算是从汇编语言一代传下来的老东西了,只有寥寥6个运算符。乍一看,你会说它没什么用处,那么你只对了一半:站在现在的高级编程角度来讲,确实用处不大;但是在涉及硬件底层的编程(如驱动程序,嵌入式开发)里,需要很强的操纵硬件能力,这时,就常常涉及到位运算。 位运算有6个运算符,它们分别是:&(与)、| 阅读全文
posted @ 2015-01-14 19:11 Darksun2010 阅读(623) 评论(1) 推荐(0) 编辑
摘要:在解决各种算法问题时,我们常常以O()来表示这个算法的时间复杂度和空间复杂度随着数据规模大小的增长而增长的速率。而这个复杂度又可以用数学的方法进行最直接的优化。 阅读全文
posted @ 2014-12-17 20:28 Darksun2010 阅读(1237) 评论(0) 推荐(0) 编辑