随笔分类 - ACM——数据结构
摘要:"题目链接" 题意 给出一个m m的地图,上面有n个点,现在需要用一个自定义面积的矩形笼罩住恰好n/2个点,并且这个矩形需要有一个点在至少一个角落上,问这个矩形最小的面积是多少。 思路 有点类似于扫描线。将y坐标离散化,沿着x轴扫过去,边加点边查找,注意这里一定要每次加一列(即x相同的时候要全加进去
阅读全文
摘要:"题目链接" 题意 给出n个矩形,求周长并。 思路 学了区间并,比较容易想到周长并。 我是对x方向和y方向分别做两次扫描线。应该记录一个pre变量,记录上一次扫描的时候的长度,对于每次遇到扫描线统计答案的时候,使用当前的 去与 做相减,因为这一次如果边长增加了或者减少了,那么一定和之前的值有差值,其
阅读全文
摘要:"题目链接" 题意 给出n个矩形,求面积并。 思路 使用扫描线,我这里离散化y轴,按照x坐标从左往右扫过去。离散化后的y轴可以用线段树维护整个y上面的线段总长度,当碰到扫描线的时候,就可以统计面积。这里要注意线段树上结点维护的是线段的信息,而不是点的信息。 "参考资料" C++ include us
阅读全文
摘要:"题目链接" 题意 给出一个长度为n的数组,每次操作都要删除数组里面非递增的元素,问最终的数组元素有什么。 思路 容易想到用链表模拟删除,但是不能每次都暴力枚举,这样复杂度O(N^2)。想到每次删除元素的时候只会影响前后,因此考虑从前面一个位置开始检查,而不用每次都扫一遍。每次check的时候,发现
阅读全文
摘要:"题目链接" 题意 给出一个n和一个k,求1~n的每个区间的第k大的总和是多少,区间长度小于k的话,贡献为0. 思路 首先有一个关系:当一个数是第k大的时候,前面有x个比它大的数,那么后面就有k x 1个比它大的数。 比赛的时候队友想出了用set来维护。一开始是一个空的set,先插入大的数,那么当之
阅读全文
摘要:"题目链接" 题意 给出一棵有n个结点的树,每个结点有一个颜色,问在这棵树的所有路径中,每条路径的颜色数求和是多少。 思路 求每种颜色的贡献可以转化为总的和减去每种颜色在哪些路径上没有出现的贡献,一个颜色在树块中的贡献为sz (sz 1)/2。 这个题就是把一棵树分成许多个树块然后统计。 1号结点为
阅读全文
摘要:"题目链接" 题意 给出一棵有边权的树,然后给出q个查询,每次查询问两个结点的路径上的边的长度的中位数是多少。 思路 这道题目是用主席树(用权值当结点)和LCA来做的。 和之前做过的区间第K大类似,这道题目是把数组转化为树。儿子结点的线段树信息是继承了父亲结点的线段树信息(数组中是第i个结点继承了第
阅读全文
摘要:http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1811 题意:给出一棵树,每一个结点有一个颜色,然后依次删除树边,问每次删除树边之后,分开的两个连通块里面的颜色交集数是多少,即公有的颜色数。 思路:可以像树形DP一样,先处理出儿子结点,然后回溯
阅读全文
摘要:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3963 题意:给出一个n个数的序列,可以在其中找一个子序列建堆,并且堆中的父亲结点j和孩子结点i满足sj ≤ si and j < i。问要分配所有的数到堆里面,最少可以建多少
阅读全文
摘要:https://www.patest.cn/contests/gplt/L3-016 题意:中文。 思路:暴力构造,暴力查询就好了。只不过操作很多,很麻烦。比赛的时候再给我10分钟就打完了,手速太慢好可惜。
阅读全文
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4819 题意:给出一个矩阵,然后q个询问,每个询问有a,b,c,代表(a,b)这个点上下左右c/2的矩形区域内的(最大值+最小值)/2是多少,并且将(a,b)的值替换成这个答案。 思路:很久以前被暴力跑过去的一道题
阅读全文
摘要:https://www.patest.cn/contests/gplt/L3-002 题意:中文题意。 思路:因为所有数<=1e5,权值线段树维护每个数出现多少次,然后每次出栈入栈都更新权值就好了。 好久没写线段树了,写的好爽233。
阅读全文
摘要:http://codeforces.com/problemset/problem/777/E 题意:给出n个环状圆柱,每个圆环有一个内半径a,外半径b,和高度h,只有外半径bj <= bi并且bj > ai,这样j才可以放在i的上面,问最大能达到的高度是多少。 思路:一开始用数组dp错了,主要是推错
阅读全文
摘要:http://acm.timus.ru/problem.aspx?space=1&num=2062 题意:有n个数,有一个值,q个询问,有单点询问操作,也有对于区间[l,r]的每个数i,使得num[i] + w, num[i*2] + w, num[i*3] + w…… 思路:有树状数组和分块两种做
阅读全文
摘要:http://poj.org/problem?id=1986 题意:给出一棵n个点m条边的树,还有q个询问,求树上两点的距离。 思路:这次学了一下倍增算法求LCA。模板。 dp[i][j]代表第i个点的第2^j个祖先是哪个点,dp[i][0] = i的第一个祖先 = fa[i]。转移方程:dp[i]
阅读全文
摘要:http://www.lydsy.com/JudgeOnline/problem.php?id=2957 题意:…… 思路:对于每一个块,维护一个单调递增的斜率(因为小于前面的斜率的话是肯定看不见的),每次修改都暴力重建这个块,然后求和的时候可以二分查找当前的块比之前的块的最大斜率大的元素个数(注意
阅读全文
摘要:http://acm.uestc.edu.cn/#/problem/show/1324 题意:…… 思路:卿学姐的学习分块例题。 分块是在线处理区间问题的类暴力算法,复杂度O(n*sqrt(n)),把给出的n个点的信息分成sqrt(n)个块,每个块有sqrt(n)个元素,然后去处理操作。 从块的左边
阅读全文
摘要:http://www.lydsy.com/JudgeOnline/problem.php?id=3289 题意:…… 思路:求交换次数即求逆序对数。确定了这个之后,先离散化数组。然后在后面插入元素的话,就是在区间里面找比它大的元素数量,在前面插入元素的话,就是在区间里面找比它小的元素数量。删除操作类
阅读全文
摘要:http://www.lydsy.com/JudgeOnline/problem.php?id=1878 题意:…… 思路:比上题还简单很多。数字很小,开一个数组哈希记录出现次数(记得数组要开1e6),然后直接算就行了。
阅读全文
摘要:http://www.lydsy.com/JudgeOnline/problem.php?id=2038 题意:…… 思路:莫队算法学习可以看这个:http://www.cnblogs.com/hzf-sbit/p/4056874.html。 大概就是一种离线算法,通过排序优化询问序列,然后可以在O
阅读全文

浙公网安备 33010602011771号