![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
树状数组
文章平均质量分 67
LF_本心cy
时间好快好快,转眼间,什么都变了。物是人非,一切都终究归零。
展开
-
种树
题目一条街的一边有几座房子。因为环保原因居民想要在路边种些树。路边的地区被分割成块,并被编号为1..n。每个块的大小为一个单位尺寸并最多可种一棵树。每个居民想在门前种些树并指定了三个号码b,e,t。这三个数表示该居民想在b和e之间最少种t棵树。当然,b<=e,居民必须保证在指定地区不能种多于地区被分割成块数的树,即要求t<=e-b+1。允许居民想种树的各自区域可以交叉。出于资金短缺的原因,环保部门请原创 2016-06-30 15:17:28 · 855 阅读 · 0 评论 -
树状数组学习小结
BIT(树状数组),很强大,主要体现在时间,空间,编程复杂度都要比segmen tree(线段树)小,缺点就是适用范围比segmen tree小,也就是说它能解决的问题线段树一定能够解决。 搞了我一天,才终于搞会了树状数组以及一些变形的用法。 在这里推荐一片我认为讲的比较清楚的:(http://wenku.baidu.com/link?url=91qLGMGUKpOaaaRPjjY3l_axRB原创 2016-07-06 16:17:26 · 327 阅读 · 0 评论 -
逆序对
学了树状数组后,突然想到了这个逆序对,我也就顺便记了下来,以防以后忘掉后不知所措。(。・・)ノ逆序对:一个序列a中,如果有i < j&&a[i]>a[j],那么这就是一个逆序对。 那么如何求一个序列中逆序对的个数?o(^▽^)┛基本方法:n2n^2的两重循环,暴力寻找前面比当前位置大的数。 当然,这是最蠢的方法- -|||归并排序:我们可以通过归并排序(从小到大),每次二分区间,在合并时,这两个原创 2016-07-17 15:00:48 · 371 阅读 · 0 评论 -
Binary 【NOIP2016提高A组模拟8.17】
题目 样例输入: 6 6 8 9 1 13 9 3 1 4 5 2 6 9 1 3 7 2 7 7 1 6 1 2 11 13样例输出: 45 19 21数据范围: 剖解题目被虐,不想说了了QAQ~~思路曾经做过一道类似的题,对于这种情况就是要把每个数拆成二进制去考虑,因为看到了每个数最大是2202^{20},也就是最多只有20位,所以要往这方面想。解法40%:暴力原创 2016-08-18 20:23:10 · 445 阅读 · 0 评论 -
被粉碎的线段树【NOIP2016提高A组模拟9.3】
题目 样例输入: 第一行包括两个正整数,N ,M ,分别表示线段树的宽以及询问次数。 以下N-1 行以先序遍历(dfs深搜顺序)描述一个小R线段树,每行一个正整数表示当前非叶子节点的 mid,保证每个节点L<=mid<=r 。 (因为叶子节点不需要mid ,所以在读入时走到叶子节点时回溯即可,所以共N-1 个mid ,而且保证1~N-1 各出现一次) 而后M 行每行包括两个正整数,L,r(原创 2016-09-05 20:45:10 · 752 阅读 · 0 评论 -
整除【NOIP2016提高A组模拟9.21】
题目麦克雷有一个1~n的排列,他想知道对于一些区间,有多少对区间内的数(x,y),满足x能被y整除 样例输入: 第一行包含2个正整数n,m。表示有n个数,m个询问。 接下来一行包含n个正整数,表示麦克雷有的数列。 接下来m行每行包含2个正整数l,r。表示询问区间[l,r]。 10 9 1 2 3 4 5 6 7 8 9 10 1 10 2 9 3 8 4 7 5 6 2 2原创 2016-09-23 22:13:36 · 578 阅读 · 0 评论 -
区间【NOIP2017提高A组模拟9.16】
DescriptionBernard 有n 个数,他可以随机选择一段区间(闭区间),如果这段区间的所有数的平均值在[L,R]中则Bernard会请你吃饭。求Bernard请你吃饭的概率。Input第一行有三个数n,L,R,含义如上描述。 接下来一行有n 个数代表每一个数的值。Output输出一行一个分数a/b 代表答案,其中a,b 互质。如果答案为整数则直接输出该整数即可。Sample Input原创 2017-09-16 20:49:09 · 612 阅读 · 0 评论