数据结构
文章平均质量分 85
相思作坊半世离殇
多刷题。
展开
-
线段树基本知识
线段树是擅长处理区间的一种数据结构。线段树是一棵完美二叉树,根结点维护的是整个区间,每个结点维护的是父亲的区间二等分后的其中一个区间,所有叶子的深度都相同,每个结点要么是叶子要么是有两个儿子的树,当有n个元素时,对区间的操作可以在O(logn)时间内完成。根据结点中维护的数据的不同,线段树可以提供不同的功能,下面以Range Minimum Query(RMQ)操作的线段树为例。基于线段树的RMQ原创 2016-07-29 21:27:48 · 217 阅读 · 0 评论 -
多重背包问题
来自《挑战程序设计竞赛》1.题目原文有n中物品,它们的重量和价值分别是w[i]和v[i]。现在要从中选出一些物品使得总重量不超过W,并且价值的总和最大。不过要求第i中物品最多可以选m[i]个。数据范围12.解题思路1这是一个有个数限制的问题,对于每个物品至多选一个或者可以选任意个的问题我们已经在O(nW)时间内求解。如果使用同样的方法解答本题,则状态转移方程为:dp[i原创 2016-10-07 00:55:40 · 281 阅读 · 0 评论 -
Largest Submatrix of All 1’s(POJ 3494) 单调栈
来自《挑战程序设计竞赛》1.题目原文http://poj.org/problem?id=3494Largest Submatrix of All 1’sTime Limit: 5000MS Memory Limit: 131072KTotal Submissions: 5885 Accepted: 2219Case原创 2016-10-07 00:21:51 · 429 阅读 · 0 评论 -
Feel Good(POJ 2796) 单调栈
还是单调栈的应用,对单调栈的理解很深了一步。也渐渐的理解了,需要优化算法的时间直到满足题目要求,虽然这个优化很简单……1.题目原文http://poj.org/problem?id=2796Language:DefaultFeel GoodTime Limit: 3000MS Memory Limit: 65536K原创 2016-10-06 19:15:18 · 381 阅读 · 0 评论 -
Bad Hair Day(POJ 3250) 单调栈
来自《挑战程序设计竞赛》单调栈的应用单调栈,顾名思义,栈中的元素是单调递增或者单调递减的。1.题目原文http://poj.org/problem?id=3250Bad Hair DayTime Limit: 2000MS Memory Limit: 65536KTotal Submissions: 17768 Acc原创 2016-10-06 16:25:29 · 957 阅读 · 0 评论 -
K Smallest Sums(Uva 11997) 多路归并+优先队列
来自《算法竞赛入门经典训练指南》1.题目原文https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3148有k个整数数组,各包含k个整数。在每个数组中去一个元素加起来,可以得到k^k个元素,求这些和中最小的k个值(重复的值算多次)2.解题思路原创 2016-10-05 14:39:57 · 401 阅读 · 0 评论 -
X-Plosives(LA 3644)并查集
来自《算法竞赛入门经典训练指南》1.题目原文https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1645有一些简单化合物,每个化合物有两种元素组成。你是一个装箱工人,负责把化合物装上车,如果车上存在k个简单化合物,正好包含k个元素原创 2016-10-05 09:46:53 · 319 阅读 · 0 评论 -
Easy Problem from Rujia Liu?(UVa 11991) map应用
来自《算法竞赛入门经典训练指南》1.题目原文https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3142给出一个n个整数的数组,有m个查询,每次查询两个整数k和v,输出从左到右第k个v的下标(数组的下标从1到n),不存在输出02.解题思路可原创 2016-10-05 08:58:54 · 259 阅读 · 0 评论 -
Expedition(POJ 2431) 优先队列
来自《挑战程序设计竞赛》1.题目原文http://poj.org/problem?id=2431ExpeditionTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 13194 Accepted: 3749DescriptionA g原创 2016-10-03 23:18:03 · 243 阅读 · 0 评论 -
POJ 3255 Roadblocks
RoadblocksTime Limit: 2000MS Memory Limit: 65536KTotal Submissions: 13365 Accepted: 4695DescriptionBessie has moved to a small farm and sometimes enjoys returni原创 2016-11-27 20:22:43 · 324 阅读 · 0 评论 -
挑战程序设计竞赛 4.4常用技巧(二)
来自《挑战程序设计竞赛》1.单调栈的应用1.POJ25591.题目原文http://poj.org/problem?id=2559Largest Rectangle in a HistogramTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 19669原创 2016-10-06 17:13:21 · 796 阅读 · 0 评论 -
Corporative Network(LA 3027)
来自《算法竞赛入门经典训练指南》1.题目原文https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=10282.解题思路题目显然符合并查集的特点,但是和基本并查集不同的是需要查询以及维护每个节点到根节点的距离。在模板的基础上改一下原创 2016-10-05 09:23:16 · 196 阅读 · 0 评论 -
线段树模板:点修改,区间修改
最近在看《算法竞赛入门经典训练指南》, 感觉以前的想法几乎完全是错的,模板并不一定能直接套。最近在看线段树,才知道线段树每个节点的附加信息才是重头戏,因此完全套模板是不可行的。但是思想方法可以借鉴,并在此基础上 加以改进。1.点修改给出一个有n个元素的数组A[1],A[2],……A[n]。任务是设计一个数据结构,支持以下两种操作:①update(x,v):把A[x]修改为v。②原创 2016-10-10 17:00:59 · 1587 阅读 · 0 评论 -
hdu1213(并查集模板)
直接贴代码了。#include#include#includeusing namespace std;#define maxn 1005int par[maxn];//父亲int Rank[maxn];//树的高度//初始化void init(int n){ for(int i=0;i<n;i++){ par[i]=-1; Rank[i原创 2016-07-31 21:38:26 · 247 阅读 · 0 评论 -
poj1182食物链
食物链Time Limit: 1000MS Memory Limit: 10000KTotal Submissions: 63185 Accepted: 18529Description动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B, B吃C,C吃A。 现有N个动物,以1-N编号。每个动物都原创 2016-08-01 17:37:08 · 230 阅读 · 0 评论 -
poj1769 Minimizing maximizer线段树优化dp
题目抽象出数学模型就是说,最少需要多少个区间能完全覆盖区间[1,n]。原创 2016-08-02 23:11:49 · 468 阅读 · 0 评论 -
图的最短路径及最小生成树 模板
本文来自《挑战程序设计竞赛》2.5 它们其实都是图1.图的搜索1.题目原文:二分图判定。给定一个具有n个顶点的图,要给图上每个顶点染色,并且要使相邻的顶点颜色不同。问是否能最多用两种颜色进行染色。题目保证没有重边和自环。12.分析:把相邻顶点染成不同颜色的问题叫作图的着色问题。对图进行染色所需要的最小颜色数成为最小着色数。最小着色数是2的图称作二分图。如果只用两种颜色进原创 2016-09-07 20:13:25 · 673 阅读 · 0 评论 -
Frequent Values(UVa 11235) RMQ问题
来自《算法竞赛入门经典训练指南》1.RMQ问题范围最小值问题(Range Minimum Query,RMQ)。给出一个n个元素的数组a[1],a[2],……a[n]。设计一个数据结构,支持查询操作Query(L,R):计算min{a[L],a[L+1],……a[R]}.采用Tarjan的Sparse-Table算法,它预处理的时间是O(nlogn)。查询只需要O(1)。令d[i]原创 2016-10-09 21:02:48 · 289 阅读 · 0 评论 -
用Treap实现名次树
来自《算法竞赛入门经典训练指南》1.Treap实现名次树1.简单介绍Treap是一棵拥有键值和优先级两种权值的树。对于键值而言,这棵树是二叉排序树。对于优先级而言,这棵树是堆,即在这棵树的任意子树中,根的优先级是最大的。不难证明,如果每个结点的优先级事先给定且互不相等,整棵树的形态也就唯一确定了,和元素的插入顺序无关。在Treap的插入算法中,每个节点的优先级是随机确定的。因此原创 2016-10-11 02:45:51 · 821 阅读 · 0 评论 -
poj3468
1.#include #include #include #include #include #include #include #include #include #include #include #include #include #include#include#include#includeusing namespace std;#define I原创 2016-10-14 13:09:28 · 305 阅读 · 0 评论 -
并查集水题
1.poj2236http://poj.org/problem?id=2236题意明了,不解释,但是样例多次不通过,自己还是太渣……#include #include #include #include #include #include #include #include #include #include #include #include #inclu原创 2016-09-28 02:18:04 · 287 阅读 · 0 评论 -
K-th Number(poj2104)线段树维护区间+平方分割+二分搜索
来自《挑战程序设计竞赛》1.题目原文http://poj.org/problem?id=2104K-th NumberTime Limit: 20000MS Memory Limit: 65536KTotal Submissions: 50565 Accepted: 17253Case Time Limit: 20原创 2016-10-14 17:02:00 · 480 阅读 · 0 评论 -
UVA 10766 Organising the Organisation生成树计数
1.题目大意:某个公司,对所有员工有分级,分级的情况构成一颗树,其中父结点是子结点的直接领导。给一些约束条件,表示a.b都不愿让对方是自己的直接领导,求一共有多少种不同的员工分级方案。2.解题思路:若a,b之间没直接矛盾,就建一条边,那样我们得到的员工之间的关系就是一个生成树。虽然规定了生成树的根,但是无向图的生成树个数与根无关,所以直接利用Matrix-Tree定理求出生成树的个数即原创 2016-12-22 01:12:09 · 517 阅读 · 0 评论