随笔分类 - ACM / 数据结构:线段树
摘要:题意: 给定一个稀疏矩阵,里面有若干个气球,让你横着开三枪,竖着开三枪,问最多能打爆多少气球,要求相同方向,相邻两枪必须间隔r。 题解: 横向记录每列有多少个气球,分别在哪行上。 然后把这个数据改造成以此点为左端点,此列,以及此行右r列,以及右2r列的信息。 纵向记录每行有多少个气球。 然后将此数据
阅读全文
摘要:题意: 有一个树林,树林中不同种类的树有不同的数量,高度,砍伐它们的价格。现在要求砍掉一些树,使得高度最高的树占剩下的树的总数的一半以上,求最小花费。 题解: 用线段树维护不同种类树的信息,叶子节点从左到右存储单棵砍伐花费最小的树,从高度由高到低枚举树的种类,每次记这种树为留下的最高的树,每次将此种
阅读全文
摘要:题意: 给定一个矩阵,矩阵上有若干点,每个点有正或负的权值,找一个方框框住一些点使得方框中点权值最大。 题解: 离散化横纵坐标,容易将这个问题转化为在矩阵上求最大和子矩阵的问题。 普通的n*n的矩阵的子矩阵最大和正解为$O(n^3)$,枚举上下端点后dp 然而此题是一个稀疏矩阵,n*n矩阵中只有O(
阅读全文
摘要:进入正题前,先介绍一个计算排列的超好用的工具: next_permutation()和prev_permutation() 这两个函数定义在algorithm库中 参数和sort类似,传入三个参数,数组首位,数组末位的后一个,以及比较函数,当比较函数省略时,默认为less 功能是生成当前这个数组里的
阅读全文
摘要:题意: 给定一组数,共n个,第i次把第i个数扔进来,要求你删掉前i-1个数中的一些(不许删掉刚加进来这个数),使得前i个数相加的和小于m。问你对于每个i,最少需要删掉几个数字。 题解: 肯定是优先删大数,一开始想的方法类似于尺取,就是维护一个大顶堆作为现有的数,小顶堆作为要删的数,每次大顶堆的元素总
阅读全文

浙公网安备 33010602011771号