文章分类 -  数据结构——树状数组

摘要:"传送门" Solution: 我们只需要采用和树链剖分近似的思想——把整个树的dfs序整理出来,排成线型。 这样一个节点的子树肯定是连续的一段,于是乎就可以用树状数组维护单点修改+区间查询的任务了。 cpp include include define N 100005 using namespa 阅读全文
posted @ 2018-08-13 11:11 Patrickpwq 阅读(120) 评论(0) 推荐(0)
摘要:" 传送门在这儿 " 讲的真好!我还是写线段树。 阅读全文
posted @ 2018-08-07 21:41 Patrickpwq 阅读(82) 评论(0) 推荐(0)
摘要:"传送门" 就是一个二维树状数组单点修改+区间查询的模板题,代码特别好实现,可以来练练手。 cpp include include include using namespace std; int trash,n,tree[1050][1050]; inline int lowbit(int x) 阅读全文
posted @ 2018-08-05 22:48 Patrickpwq 阅读(149) 评论(0) 推荐(0)
摘要:"传送门" 就是stars的变式。 把e,s当成一个点的横坐标,纵坐标后,经过画图会发现,所要求的点,其实就是一个点的左上方。 按y从大到下排序,然后树状数组维护一下类似桶的东西即可。 cpp include include include include using namespace std; 阅读全文
posted @ 2018-08-05 09:27 Patrickpwq 阅读(84) 评论(0) 推荐(0)
摘要:" 传送门 " Solution: 由于数字的大小可能非常大,而且都是未知的,所以只能采用离散化的方式先将数组离散化。 每次把这个数的位置加入到树状数组中,因为是排完序之后,所以之前加入的一定比后加入的大 然后再查询当前这个数前面位置的数。 cpp include define N 40005 us 阅读全文
posted @ 2018-08-04 21:40 Patrickpwq 阅读(336) 评论(0) 推荐(0)
摘要:" 传送门 " 由于输出中的y还是单调递增,甚至还不用排序了。 我们用树状数组维护一个类似桶的东西即可,在update,注意是i=x;i include include using namespace std; int n,tree[32015],level[32015]; inline int l 阅读全文
posted @ 2018-08-04 20:21 Patrickpwq 阅读(116) 评论(0) 推荐(0)