Processing math: 100%

随笔分类 -  树状数组

摘要:T1 solution 求出第一个开始下降的位置,移动到连续的与它相同的数的最前面的一个数的位置,记录为p p以前的位置的数与原数相同,p位置为原数 1,后面全部为9 cpp include include include include define int long long u 阅读全文
posted @ 2019-11-04 21:46 yjk 阅读(199) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 首先求出原序列的逆序对个数, 然后考虑每次将目标序列最前面的数放在最后,即最小的数变为最大 设最小数的位置是p,那么逆序对的个数增加了np,减少了p1 cpp include include include define int long long using name 阅读全文
posted @ 2019-10-21 11:50 yjk 阅读(190) 评论(0) 推荐(0) 编辑
摘要:贪婪大陆 题目链接 对于一个区间[l,r],右端点在l左边即[1,l-1]中的区间与区间[l,r]没有交集, 左端点在r右边即[r,n]中的区间与区间[l,r]没有交集, 其余区间必与[l,r]有交集, 因此维护两个树状数组,一个维护从1开始右端点的数量, 另一个维护从n开始左端点的数量,插入时取值 阅读全文
posted @ 2018-07-24 15:25 yjk 阅读(173) 评论(0) 推荐(0) 编辑
摘要:火柴排队 题目链接 ∑(ai​−bi​)^2=∑ai^2-2*∑ai*bi+∑bi^2 显然∑ai^2+∑bi^2是不变的,我们要让 2*∑ai*bi最大,才能使原式最小 然后我们一眼就可以看出来, 当第i大的ai与第i大的bi一一对应时,∑ai*bi最大 反正我不会证 知道了对应关系后,于是就成了 阅读全文
posted @ 2018-07-24 14:03 yjk 阅读(126) 评论(0) 推荐(0) 编辑
摘要:最接近神的人_NOI导刊2010提高(02) 用类似于桶的方法,树状数组记录原序列的某位置之前已经插入了多少个数, 插入时树状数组单点加1即可 先排一遍序,从大到小插入所有数在原序列的位置, 统计每次插入时,在该元素前面元素的个数, 前面的元素是先插入的,比该元素大,而在序列中的位置靠前, 所以这个 阅读全文
posted @ 2018-07-04 09:06 yjk 阅读(260) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示