随笔分类 - 题解
摘要:Power Hungry Cows(POJ 1945) Description FJ的奶牛想要快速计算整数P的幂 (1 $1.$$(a,b)$和$(b,a)$是一样的,令$a b$,删去第二种状态 $2.$$(a,a)$这个状态一定不如$(a,b)$,自乘自除可以达到一样的效果,直接删去 $3.$形
阅读全文
摘要:Pushing Boxes Description Imagine you are standing inside a two dimensional maze composed of square cells which may or may not be filled with rock. Yo
阅读全文
摘要:ice(USACO) Description Bessie 在一个冰封的湖面上游泳,湖面可以表示为二维的平面,坐标范围是 1,000,000,000..1,000,000,000。 湖面上的N(1 . ...G. . ...G. . ...B. 0 .... . .... . .... . ....
阅读全文
摘要:Description 7月17日是Mr.W的生日,ACM THU为此要制作一个体积为N×π的M层生日蛋糕,每层都是一个圆柱体。 设从下往上数第i(1 Ri+1且Hi Hi+1。 由于要在蛋糕上抹奶油,为尽可能节约经费,我们希望蛋糕外表面(最下一层的下底面除外)的面积Q最小。 令Q = S×π请编程
阅读全文
摘要:骑士精神(SCOI2005) Description 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位。在任何时候一个骑士都能按照骑 士的走法(它可以走到和它横坐标相差为1,纵坐标相差为2或者横坐标相差为2,纵坐标相差为1的格子)移动到空 位上。 给定一个初始的棋盘,怎样才能
阅读全文
摘要:新增一道例题及讲解 Exkruscal $Exkruscal$又称$Kruscal$重构树,是一种利用经典算法$Kruscal$来实现的构造算法,可以将一张无向图重构为一棵具有$2n 1$个节点的树,这棵树具有许多特殊的性质,可以用来解决许多问题。 那么我们来了解一下这个新算法。 Kruscal 先
阅读全文
摘要:平面最近点对 平面最近点对算是一个经典的问题了,虽然谈不上是什么专门的算法,但是拿出问题模型好好分析一个是有必要的。 给定$n$个二元组$(x,y)$,代表同一平面内的$n$个点的坐标,求$\min\{dis_{(p,q)}\}$。 其中,定义$dis_{(p,q)}$代表两点的直线距离,即$dis
阅读全文
摘要:最小表示法 这是一个简单的字符串算法,其解决的问题如下: 给定一个字符串$S$,长度为$n$,如果把它的最后一个字符不断放到最前面,会得到$n$个不同的字符串,那么我们称这$n$个字符串是循环同构的。这$n$个字符串中字典序最小的一个,我们就称为$S$的最小表示。 $For\ example:$ $
阅读全文
摘要:字典树 (trie) 字典树,又名$trie$树,是一种用于实现字符串快速检索的树形数据结构。核心思想为利用若干字符串的公共前缀来节约储存空间以及实现快速检索。 $trie$树可以在$O((n+m) len)$解决形如这样的字符串检索问题: 给定$n$个字符串,再给定$m$个询问,每次询问某个字符串
阅读全文
摘要:新增一道例题 左偏树 Leftist Tree 这是一个由堆(优先队列)推广而来的神奇数据结构,我们先来了解一下它。 简单的来说,左偏树可以实现一般堆的所有功能,如查询最值,删除堆顶元素,加入新元素等,时间复杂度也均相等,与其不同的是,左偏树还可以在$O(log_2n)$的时间之内实现两个堆的合并操
阅读全文
摘要:火车进出栈问题 Description 一列火车n节车厢,依次编号为1,2,3,…,n。每节车厢有两种运动方式,进栈与出栈,问n节车厢出栈的可能排列方式有多少种。 Input Format 一个数,n(n代码片段:将$!n$分解质因数 $Code:$ cpp //prime[i]存了1 n范围内的所
阅读全文
摘要:『线段树简单运用』 更新了例题部分 更新了总结部分 线段树的基础博客见这篇 "『线段树 Segment Tree』" ,这里通过两道例题来深入理解。 农场分配 Description Farmer John最近新建立了一个农场,并且正在接受奶牛的畜栏分配请求,有些 畜栏会看到农场美妙的风景。:) 农
阅读全文
摘要:sumdiv(POJ 1845) Description 给定两个自然数A和B,S为A^B的所有正整数约数和,编程输出S mod 9901的结果。 Input Format 只有一行,两个用空格隔开的自然数A和B(0 using namespace std; const int Mod=9901;
阅读全文
摘要:离散化(discrete) 离散化可以说是一个很基础的算法吧,但是有些时候还是很好用很有必要的算法。 离散化的排序的一个运用,具体地讲,离散化算法是将无穷大集合中的若干个元素映射到有限大小的集合中,以达到对算法进行时间,空间复杂度的优化的效果。 当然,使用离散化算法进行优化需要满足离散化只有的数值不
阅读全文
摘要:更新了基础部分 更新了$lazytag$标记的讲解 线段树 Segment Tree 今天来讲一下经典的线段树。 线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。 简单的说,线段树是一种基于分治思想的数据结构,用来维护序列的区间特殊值,相对
阅读全文
摘要:分块 分块查找是折半查找和顺序查找的一种改进方法,分块查找由于只要求索引表是有序的,对块内节点没有排序要求,因此特别适合于节点动态变化的情况。 分块其实可以说是一种偏数据结构类的通用型算法吧,没有很艰深的内容,与暴力最为相似,但是在很多题目中都能派上很好的用场。 我们可以先通过一道模板例题来了解分块
阅读全文
摘要:追捕盗贼(COCI2007) Description 为了帮助警察抓住在逃的罪犯,你发明了一个新的计算机系统。警察控制的区域有N个城市,城市之间有E条双向边连接,城市编号为1到N。 警察经常想在罪犯从一个城市逃亡另一个城市的过程中抓住他。侦查员在仔细研究地图,以决定在哪个城市设置障碍,或者断掉某条路
阅读全文
摘要:无向图的双连通分量 定义:若一张无向连通图不存在割点,则称它为"点双连通图"。若一张无向连通图不存在割边,则称它为"边双连通图"。 无向图图的极大点双连通子图被称为"点双连通分量",记为"$v DCC$"。无向图图的极大边双连通子图被称为"边双连通分量",记为"$e DCC$"。 没错,万能的图论连
阅读全文
摘要:有向图的强连通分量 定义:在有向图$G$中,如果两个顶点$v_i,v_j$间$(v_i v_j)$有一条从$v_i$到$v_j$的有向路径,同时还有一条从$v_j$到$v_i$的有向路径,则称两个顶点强连通($strongly\ connected$)。如果有向图$G$的每两个顶点都强连通,称$G$
阅读全文
摘要:无向图的割点与割边 定义:给定无相连通图$G=(V,E)$ 若对于$x \in V$,从图中删去节点$x$以及所有与$x$关联的边后,$G$分裂为两个或以上不连通的子图,则称$x$为$G$的割点。 若对于$e \in E$,从图中删去边$e$之后,$G$分裂为两个不连通的子图,则称$e$为$G$的割
阅读全文