算法模板
eternityer
一名孱弱的acmer.
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
ST算法 (模板)
ST算法初始化dp[i][j]代表以i为起点,2^j 宽的最值 ,即以i+2^j-1结束。arr[i]代表原数组。void ST_prework(int n){ fir(i,1,n) dp[i][0]=arr[i]; int k=log(n*1.0)/log(2.0); fir(j,1,k){ fir(i,1,n-(1<<j)+1){ dp[i][j]=mi...原创 2019-07-25 14:01:11 · 222 阅读 · 0 评论 -
[算法竞赛进阶指南] 可达性统计 (拓扑排序+bitset)
题目给定一张N个点M条边的有向无环图,分别统计从每个点出发能够到达的点的数量。输入格式第一行两个整数N,M,接下来M行每行两个整数x,y,表示从x到y的一条有向边。输出格式输出共N行,表示每个点能够到达的点的数量。数据范围1≤N,M≤30000输入样例:10 103 82 32 55 95 92 33 94 82 104 9输出样例:16332...原创 2019-08-09 13:55:03 · 420 阅读 · 0 评论 -
[算法竞赛进阶指南] 矩阵距离 (广搜)
题目给定一个N行M列的01矩阵A,A[i][j] 与 A[k][l] 之间的曼哈顿距离定义为:dist(A[i][j],A[k][l])=|i−k|+|j−l|输出一个N行M列的整数矩阵B,其中:B[i][j]=min1≤x≤N,1≤y≤M,A[x][y]=1dist(A[i][j],A[x][y])输入格式第一行两个整数n,m。接下来一个N行M列的01矩阵,数字之间没有空格。...原创 2019-08-09 14:01:39 · 847 阅读 · 0 评论 -
[算法竞赛进阶指南] 矩阵 (二维Hash+前缀和)
题目给定一个M行N列的01矩阵(只包含数字0或1的矩阵),再执行Q次询问,每次询问给出一个A行B列的01矩阵,求该矩阵是否在原矩阵中出现过。输入格式第一行四个整数M,N,A,B。接下来一个M行N列的01矩阵,数字之间没有空格。接下来一个整数Q。接下来Q个A行B列的01矩阵,数字之间没有空格。输出格式对于每个询问,输出1表示出现过,0表示没有出现过。数据范围A≤100,M,N,B...原创 2019-08-09 14:09:43 · 456 阅读 · 0 评论 -
[算法竞赛进阶指南] 双栈排序 (二分图+栈)
题目Tom最近在研究一个有趣的排序问题。通过2个栈S1和S2,Tom希望借助以下4种操作实现将输入序列升序排序。操作a如果输入序列不为空,将第一个元素压入栈S1操作b如果栈S1不为空,将S1栈顶元素弹出至输出序列操作c如果输入序列不为空,将第一个元素压入栈S2操作d如果栈S2不为空,将S2栈顶元素弹出至输出序列如果一个1~n的排列P可以通过一系列操作使得输出序列为1, 2,…...原创 2019-08-09 14:34:00 · 395 阅读 · 0 评论 -
[算法竞赛进阶指南] 城市游戏 (单调栈)
题目有一天,小猫rainbow和freda来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地。这片土地被分成N*M个格子,每个格子里写着’R’或者’F’,R代表这块土地被赐予了rainbow,F代表这块土地被赐予了freda。现在freda要在这里卖萌。。。它要找一块矩形土地,要求这片土地都标着’F’并且面积最大。但是rainbow和freda的OI水平都弱...原创 2019-08-09 14:47:51 · 224 阅读 · 0 评论 -
[算法竞赛进阶指南] 荷马史诗 (优先队列)
题目追逐影子的人,自己就是影子。 ——荷马达达最近迷上了文学。她喜欢在一个慵懒的午后,细细地品上一杯卡布奇诺,静静地阅读她爱不释手的《荷马史诗》。但是由《奥德赛》和《伊利亚特》组成的鸿篇巨制《荷马史诗》实在是太长了,达达想通过一种编码方式使得它变得短一些。一部《荷马史诗》中有 n 种不同的单词,从 1 到 n 进行编号。其中第 i 种单词出现的总次数为 wi。达达想要用 k 进制串 s...原创 2019-08-09 14:56:51 · 261 阅读 · 0 评论 -
[算法竞赛进阶指南] 数据备份 (优先队列+双向链表)
题目你在一家IT公司为大型写字楼或办公楼的计算机数据做备份。然而数据备份的工作是枯燥乏味的,因此你想设计一个系统让不同的办公楼彼此之间互相备份,而你则坐在家中尽享计算机游戏的乐趣。已知办公楼都位于同一条街上,你决定给这些办公楼配对(两个一组)。每一对办公楼可以通过在这两个建筑物之间铺设网络电缆使得它们可以互相备份。然而,网络电缆的费用很高。当地电信公司仅能为你提供 K 条网络电缆,这意...原创 2019-08-09 15:06:19 · 388 阅读 · 0 评论 -
[算法竞赛进阶指南] 树形地铁系统 (树的最小表示)
题目一些主要城市拥有树形的地铁系统,即在任何一对车站之间,有且只有一种方式可以乘坐地铁。此外,这些城市大多数都有一个中央车站。想象一下,你是一名在拥有树形地铁系统的城市游玩的游客,你想探索该城市完整的地铁线路。你从中央车站出发,随机选择一条地铁线,然后乘坐地铁行进。每次到达一个车站,你都将选择一条尚未乘坐过的地铁线路进行乘坐。如果不存在未乘坐过的线路,则退回到上一个车站,再做选择。直...原创 2019-08-09 15:12:17 · 302 阅读 · 0 评论 -
[算法竞赛进阶指南] 火车进出栈问题 (卡特兰数)
题目一列火车n节车厢,依次编号为1,2,3,…,n。每节车厢有两种运动方式,进栈与出栈,问n节车厢出栈的可能排列方式有多少种。输入格式输入一个整数n,代表火车的车厢数。输出格式输出一个整数s表示n节车厢出栈的可能排列方式数量。数据范围1≤n≤60000输入样例:3输出样例:5分析这个题目就是求卡特兰数,卡特兰数是一种用途非常广的递推数列。下面给出用组合数求卡特兰...原创 2019-08-01 22:39:33 · 600 阅读 · 0 评论 -
[算法竞赛进阶指南] 直方图中最大矩形 (单调栈)
题目直方图是由在公共基线处对齐的一系列矩形组成的多边形。矩形具有相等的宽度,但可以具有不同的高度。例如,图例左侧显示了由高度为2,1,4,5,1,3,3的矩形组成的直方图矩形的宽度都为1:通常,直方图用于表示离散分布,例如,文本中字符的频率。现在,请你计算在公共基线处对齐的直方图中最大矩形的面积。图例右图显示了所描绘直方图的最大对齐矩形。输入格式输入包含几个测试用例。每个测试...原创 2019-08-01 22:20:25 · 804 阅读 · 0 评论 -
[算法竞赛进阶指南] 兔子与兔子 (Hash+前缀和)
题目很久很久以前,森林里住着一群兔子。有一天,兔子们想要研究自己的 DNA 序列。我们首先选取一个好长好长的 DNA 序列(小兔子是外星生物,DNA 序列可能包含 26 个小写英文字母)。然后我们每次选择两个区间,询问如果用两个区间里的 DNA 序列分别生产出来两只兔子,这两个兔子是否一模一样。注意两个兔子一模一样只可能是他们的 DNA 序列一模一样。输入格式第一行输入一个 DNA ...原创 2019-08-01 21:08:45 · 427 阅读 · 0 评论 -
ZOJ-4109 Welcome Party (并查集+BFS+优先队列)
Problem DescriptionThe 44th World Finals of the International Collegiate Programming Contest (ICPC 2020) will be held in Moscow, Russia. To celebrate this annual event for the best competitive progra...原创 2019-08-03 23:25:13 · 258 阅读 · 0 评论 -
[算法竞赛进阶指南] 超市 (贪心+并查集/优先队列)
题目超市里有N件商品,每个商品都有利润pi和过期时间di,每天只能卖一件商品,过期商品(即当天di<=0)不能再卖。求合理安排每天卖的商品的情况下,可以得到的最大收益是多少。输入格式输入包含多组测试用例。每组测试用例,以输入整数N开始,接下里输入N对pi和di,分别代表第i件商品的利润和过期时间。在输入中,数据之间可以自由穿插任意个空格或空行,输入至文件结尾时终止输入,保证数据正...原创 2019-08-03 23:51:17 · 450 阅读 · 0 评论 -
[算法竞赛进阶指南] 前缀统计 (trie树)
题目给定N个字符串S1,S2…SN,接下来进行M次询问,每次询问给定一个字符串T,求S1~SN中有多少个字符串是T的前缀。输入字符串的总长度不超过106,仅包含小写字母。输入格式第一行输入两个整数N,M。接下来N行每行输入一个字符串Si。接下来M行每行一个字符串T用以询问。输出格式对于每个询问,输出一个整数表示答案。每个答案占一行。输入样例:3 2abbcabcabc...原创 2019-08-04 13:49:47 · 389 阅读 · 0 评论 -
[算法竞赛进阶指南] 周期 (KMP)
题目一个字符串的前缀是从第一个字符开始的连续若干个字符,例如”abaab”共有5个前缀,分别是a, ab, aba, abaa, abaab。我们希望知道一个N位字符串S的前缀是否具有循环节。换言之,对于每一个从头开始的长度为 i (i>1)的前缀,是否由重复出现的子串A组成,即 AAA…A (A重复出现K次,K>1)。如果存在,请找出最短的循环节对应的K值(也就是这个前缀串的...原创 2019-08-04 14:01:56 · 350 阅读 · 0 评论 -
[算法竞赛进阶指南] 最大异或对 (trie树)
题目在给定的N个整数A1,A2……AN中选出两个进行xor(异或)运算,得到的结果最大是多少?输入格式第一行输入一个整数N。第二行输入N个整数A1~AN。输出格式输出一个整数表示答案。数据范围1≤N≤105,0≤Ai<231输入样例:31 2 3输出样例:3分析:trie树模板题,先将所有数加入trie树,然后查询所有数在trie数中每个二进制位尽量往相...原创 2019-08-04 14:15:24 · 329 阅读 · 0 评论 -
[算法竞赛进阶指南] 最长异或值路径 (trie+深搜)
题目给定一个树,树上的边都具有权值。树中一条路径的异或长度被定义为路径上所有边的权值的异或和:给定上述的具有n个节点的树,你能找到异或长度最大的路径吗?输入格式第一行包含整数n,表示树的节点数目。接下来n-1行,每行包括三个整数u,v,w,表示节点u和节点v之间有一条边权重为w。输出格式输出一个整数,表示异或长度最大的路径的最大异或和。数据范围1≤n≤100000,0≤u,v...原创 2019-08-04 14:31:27 · 225 阅读 · 0 评论 -
[算法竞赛进阶指南] 四塔汉诺塔 (递推)
题目汉诺塔问题的加强版。将汉诺塔问题中三座塔改成四座塔。那么当输入n个圆盘时,应该要走多少步。输入格式一个数n。输出格式一个整数,即需要走的步数。输入样例12输出样例81数据范围1<=n<=60分析四塔问题其实和三塔问题解决方案差不多,先求出三塔问题,然后当将j个盘放到一座塔某一座塔上,然后剩下n-j个盘的解决就变成了解决三塔问题,然后剩下的j个盘又是一个小...原创 2019-07-27 18:22:25 · 2438 阅读 · 0 评论 -
最近点对分治算法 (模板)
最近点对分治算法:对于平面上给定的N个点,给出所有点的坐标,即输入是平面上的N个点,输出是N点中具有最短距离的两点。分析:这个问题我们有两种解决方案第一种就是直接暴力,对于每个点,遍历所有的点,求出他们的距离,最小的就是答案,但是这样时间复杂度无疑很大,至少是O(n^2)。第二种就是利用归并算法的思想进行二分,这样可以把时间复杂度降到O(nlogn)。现在我们主要来讨论...原创 2019-07-28 00:00:33 · 866 阅读 · 2 评论 -
[算法竞赛进阶指南] 生日礼物 (优先队列+链表)
题目翰翰18岁生日的时候,达达给她看了一个神奇的序列 A1,A2,…,AN。她被允许从中选择不超过 M 个连续的部分作为自己的生日礼物。翰翰想要知道选择元素之和的最大值。你能帮助她吗?输入格式第一行包含两个整数N,M。第二行包含N个整数A1~AN。输出格式输出一个整数,表示答案。数据范围1≤N,M≤105,|Ai|≤104输入样例:5 2 2 -3 2 -1 2输...原创 2019-08-09 15:26:24 · 572 阅读 · 0 评论
分享