数据结构
Alstein
十年oi一场空,不开longlong见祖宗
展开
-
hdu1828,扫描线求矩形边长
这道题利用扫描线求取矩形的周长,不包括重叠部分。可以扫两次,竖着扫一次,横着扫一次,扫两次这个我写出bug来了,现在也不知道bug在哪儿QAQ,反手一想算了还是去写扫一次的。画图模拟一下扫描线扫的过程会发现我们横着的周长就是每加入一条扫描线后线段树总长的变化,而竖着的则和我们线段树维护的被覆盖的区间是几段有关,设是x段,那么本次竖着的周长=(下一条扫描线高度 - 这一条扫描线的高度) * x ...原创 2020-01-28 20:37:45 · 276 阅读 · 3 评论 -
HDU6534 Chika and Friendly Pairs(树状数组+离散化+莫队)
Problem DescriptionChika gives you an integer sequence a1,a2,…,an and m tasks. For each task, you need to answer the number of “friendly pairs” in a given interval.friendly pair: for two integers ai...原创 2020-01-17 22:34:05 · 326 阅读 · 0 评论 -
Super Mario(主席树+权值线段树)
题目:添加链接描述思路:先把数据离散化,按照权值建立主席树,然后对于一个高度h,我们找的答案是区间中不大于h的数,那么我们求取了mid后,如果h大于mid,那么左子树的数都小于h所以要统计左子树的上的数量,然后继续递归求解右子树,一直下去直到叶节点,返回它的值就ok,还有就是我们查询的高度也是离散化之后的高度。upper_bound找的时候不要找飘了#include<bits/stdc+...原创 2020-01-14 16:16:00 · 304 阅读 · 0 评论 -
学习笔记:KMP
kmp用于在一个字符串中寻找一个模式串。kmp讲解其中next数组的求解与用法值得注意。利用next数组求解循环节:假定一个字符串长度为len且len%(len-next[len])=0,那么其最小循环节的长度为len-next[len],而且这个字符串由该循环子串重复len/(len-next[len])构成;如果len%(len-next[len])!=0,说明还要加一些才能成为循环字...原创 2019-12-30 17:40:20 · 118 阅读 · 0 评论 -
Poj1990 MooFest
日常自闭,博客解忧(TAT)题意就不说了,我说可能还把你给绕晕。思路:尽管各方大神都说这道题明显先排序,但是我就是没想到,在知道先排序后,就可以想到:编号为i的牛之前的牛和牛i所能组成的pair的ans再来,对于这种绝对值,一般都是打开然后处理,我们接着就会发现这些和其实就由两部分构成,一部分是pos大于牛i的,另一部分是pos小于牛i的,所以我们要分开处理。接着就有了这样一个思路,用一个树...原创 2019-07-24 20:20:26 · 103 阅读 · 0 评论