
基础数据结构
文章平均质量分 79
jijijix
这个作者很懒,什么都没留下…
展开
-
Uva12657 Boxes in a line
/* 这道题是刘汝佳紫书144页的题目,题意不再赘述,主要记录一下这道题的收获。 由于插入的位置时左时右,因此单向链表不能处理这类问题,需要使用双向链表。 反转操作不一定真的要反转,应该根据情况灵活应对。 另外就是链表的不可忽视的一个特点,那就是链表中节点的编号不是该节点在链表中位置的编号,节点编号与节点 当中的内容是一开始就对应好不变的。比如现在原创 2016-08-11 19:22:20 · 311 阅读 · 0 评论 -
codeforces round390 div2 C Fedor and coupons
/* 题目描述:给出n(0 < n < 1e5)条线段,问用其中k条线段能覆盖住的最大长度是多少? 思路:首先对线段的所有端点进行离散化,将所有线段按照左端点小的在前,左端点相同在后的原则进行排序,再建立一个 优先队列,令其越靠近队头的线段的右端点越小。 从离散化后的第一个端点开始,向后依次枚举,对于每一个端点(假设其离散化之前为l),在排序后的线原创 2017-02-06 11:22:56 · 240 阅读 · 0 评论 -
codeforces round364 div2E Connecting Universities
/* 题目描述:给出一棵树,节点数n<=2e5,每条树边的长度为1,在树上有2k个节点,将这2k个节点两两配对,问所有对 之间距离的最大值。*/#pragma warning(disable:4786)#pragma comment(linker, "/STACK:102400000,102400000")#include#include#inc原创 2016-12-20 11:32:17 · 308 阅读 · 0 评论 -
codeforces round305 div2 Mike and Feet 排序+并查集
/* 题目描述:给定一个n个数的序列a[1],a[2],...,a[n],其中b[x]定义为从一个数开始连续的x个数中的最小值的最大值, 输出b[1],b[2],...,b[n] 思路:先把所有数按照从大到小的顺序排序,然后向左右扩展,如果左边的数大于自己,那么左边的数一定已经被标记, 那么加上左边区间里所有的数的个数,右边同理,然后将该位原创 2016-12-13 16:36:17 · 240 阅读 · 0 评论 -
fjnu1197 蒟蒻的任务分配 bitset的使用
/* 题目描述:给出n(n<= 1000)个任务,第i个任务需要耗费的时间为cost[i](cost[i]<=10),每个任务有一个兼容情况,0代表这个任 务不能和其他任务同时进行,1代表这个任务可以和其他任务同时进行,每个时刻可以同时进行一个任务或两个任务,但进行两个任务的话要求 这两个任务中至少有一个是1类型,现在问最少用多少时间可以进行原创 2016-12-06 12:10:25 · 295 阅读 · 0 评论 -
codeforces round 346div2 Polycarp and Hay搜索+并查集
/* 题目描述:给出一个n * m的矩阵,每个位置有一个数字a[i][j],每个位置的数字在处理时可以减小或保持大小不变, 问这个矩阵中能否找到一个联通块,使得这个联通块中的数字在处理后大小相同,且这些联通块的总和 为k,且联通块中至少有一个元素的值与处理之前相同,如果存在这样的联通块,输出处理后矩阵,否则 输出NO原创 2016-12-02 17:25:10 · 273 阅读 · 0 评论 -
hdu5723 Abandoned country 最小生成树 + dfs
题意:给定一张带权的无向图,先建立最小生成树,问在最小生成树中,任选两点的距离最小值的数学期望是多少?思路:首先建立最小生成树,建好图,数学期望E = Σ 1/(n * (n - 1) / 2) * i和j之间的最小距离 = 1/(n * (n - 1) / 2) * Σe.to的子树中节点数*(cnt - e.to的子树中节点数 )*e.w (其中e是生成树的树边),其中每个点的子树原创 2016-10-18 20:42:29 · 261 阅读 · 0 评论 -
bit程序设计 括号序列 栈+前缀和
题目描述:一个括号序列是指一个由'(', ')', '[', ']'四种字符组成的字符串。一个只包含数字,加号'+',和上述四种括号的合法算数表达式,去掉数字和加号之后得到的括号序列成为合法的括号序列。我们定义空串也是合法的括号序列。例如(1) + [2], ([3]), 4 + [5]相应的括号序列 "()[]", "([])", "[]"都是合法的括号序列。而(6 + 7]原创 2016-09-20 17:28:53 · 1626 阅读 · 4 评论 -
hdu5875 Function 模运算 + 单调栈
题目描述:给定数组A,数组中元素的个数不多于1e5个,现给出函数F(l , r)的定义 给出m( m 思路:首先观察模的三个性质: ①一个数模比它大的数大小不变 ②一个数先模a,再模b,如果 a>b,那么模b这一步没什么效果 ③a % b 证明:若b >= a / 2 , 则 a % b原创 2016-09-16 11:01:20 · 306 阅读 · 0 评论 -
Uva548 Tree 二叉树遍历
/* 题目描述:见紫书155页 方法:这道题的一个收获就是若给出一棵树的中序遍历和后序遍历的结果,可以还原该树。 具体还原方法是后序遍历的最后一个节点是该树的根节点,再中序遍历的结果中找到根节点,然后找到根节点 的左右子树,分别建立左子树和右子树,在建立左子树时需要先找到左子树的根节点, 然后建立左子树的左右原创 2016-08-12 22:25:55 · 281 阅读 · 0 评论 -
Uva122 Trees on the level 二叉树的数组实现
作为一个还没有系统学习数据结构知识的大一学生,简单谈一下通过这道题对二叉树产生的认识。 二叉树的一个节点中起码包含三个基础信息:节点权值、左子节点的地址(或编号)、右子节点的地址(或编号)。二叉树有三种实现方法:1.第一类数组实现 在这种实现当中,对于编号为k的节点,其左子节点的编号为2*k,右子节点的编号为2*k + 1,另外确定根节点的编号为1. 毫无原创 2016-08-12 18:11:59 · 1264 阅读 · 0 评论 -
Hdu 5815 Joint stack 链式对顶栈
/* 题目描述:给出两个栈A和B,一共有3中操作: push X y 在X栈中加入y pop X 在X栈中删掉栈顶元素并输出 merge X Y 将X栈和Y栈按照进入的顺序重组成为一个新的栈,并让这个栈原创 2017-02-02 18:13:34 · 367 阅读 · 0 评论