随笔分类 - 数据结构 树状数组
摘要:4448: [Scoi2015]情报传递 Description 奈特公司是一个巨大的情报公司,它有着庞大的情报网络。情报网络中共有n名情报员。每名情报员口J-能有 若T名(可能没有)下线,除1名大头日外其余n-1名情报员有且仅有1名上线。奈特公司纪律森严,每 名情报员只能与自己的上、下线联系,同时
阅读全文
摘要:题目大意:给你一个长度为n的数组a,然后数值大的可以合并数值小的,且合并了以后该数组的长度-1.给你一个长度为k目标数组b,问,是否可以从a数组变到b数组,是就yes并且输出步骤。否就输出no 思路:因为合并的时候要删除某一个数字,很容易想到用树状数组来维护。然后分析一下就可以得到b中第i个数,一定
阅读全文
摘要:http://codeforces.com/contest/724/problem/D 题目大意:给你一个串,从串中挑选字符,挑选是有条件的,按照这个条件所挑选出来的字符集合sort一定是最后选择当中最小的。 从pos=0开始挑选,每次挑选pos~pos+m-1这些位置中的字符,然后下一次再从之前挑
阅读全文
摘要:http://codeforces.com/contest/362 题目大意:给你一个序列,用冒泡排序法让他变为非递减的序列最少需要几次。在冒泡交换之间,你有一个swap操作,该swap操作是交换任意两个数组元素的位置,问在该操作后,所再需要的冒泡交换次数是多少,并输出方案数 思路:树状数组维护一下
阅读全文
摘要:题目大意:给你n个人,每个人都有一个id,有m个询问,每次询问一个区间[l,r],问该区间内部有多少的id是连续的(单独的也算是一个) 思路:做了那么多离线+树状数组的题目,感觉这种东西就是一个模板了,23333,反正都是定义右区间的。 这题的关键难度就是如何定义id是连续的呢。我们每次往区间里面放
阅读全文
摘要:HDU 3938 题目大意:给你一个长度为n的数组a,定义区间[l,r]的val为区间内所有不同的数值之和。现在有m个询问,每次询问一个区间,问区间的val是多少。 思路:将所有的询问按照右端点排序。然后暴力枚举右区间,然后对之前出现过的val做一个标记即可,每次都更新这个标记就好了。 具体的和HD
阅读全文
摘要:题目大意:给你一个长度为n的数组,问[L,R]之间<=val的个数 思路:就像标题说的那样就行了。树状数组不一定是离散化以后的区间,而可以是id //看看会不会爆int!数组会不会少了一维! //取物问题一定要小心先手胜利的条件 #include <bits/stdc++.h> using name
阅读全文
摘要:题目大意:长度n的序列, m个询问区间[L, R], 问区间内的所有子段的不同GCD值有多少种. 子段就是表示是要连续的a[] 思路:固定右端点,预处理出所有的gcd,每次都和i-1的gcd比较,然后不断放入gcd即可。 然后就是树状数组的更新,枚举右端点即可。然后我们知道,大区间不如小区间来的实惠
阅读全文
摘要:http://codeforces.com/contest/703/problem/D 题目大意:给你一个长度为n数组,有q个询问,每次询问一个区间[l,r],这个区间的val就是所有数值为偶数个的数的亦或值。 思路:先求出所有区间的亦或和的val,然后利用树状数组离线维护,然后用所有区间^树状数组
阅读全文
摘要:http://codeforces.com/contest/313/problem/B 题目大意 给一个区间,问你这个区间里面有几个连续相同的字符。 思路: 表示个人用树状数组来写的。。。了解了树状数组的本质就行了。 当然用sum[r]-sum[l]也是可以的
阅读全文
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1394 或者是我自己挂的专题http://acm.hust.edu.cn/vjudge/contest/view.action?cid=117125#problem/D 思路的话就是我们找出右边比他小的和左边比他小
阅读全文

浙公网安备 33010602011771号