摘要: 原题链接 考察:树状数组 思路: 本蒟蒻是完全想不到怎么写....参考大佬题解. 求种类数,可以处理的方法一个是针对询问实时加入数.但是这样一定会TLE,然后不好求重复的数字数. 参考大佬的题解,正解做法是i从1~n实时加入数,到询问的右端点求ans.这里与求逆序对的方法不同的是tr[i]表示下标为 阅读全文
posted @ 2021-05-15 23:36 acmloser 阅读(52) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:树状数组+离散化 思路: 很明显先离散化能力值.然后建边开始dfs树. 比较难想的是如何求每个点比它能力高的子结点数量~~(对本蒟蒻而言)~~ 首先确定搜索顺序.先遍历子结点,然后再单点加入自己的权值.深度深的子节点可能会被深度浅的父节点用到更新,因此不能删除树状数组在子节点的存储的 阅读全文
posted @ 2021-05-15 20:32 acmloser 阅读(44) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:树状数组+hash 本题的总结: 如果b可以交换任意元素到a,那么最少交换次数 = 环长度-1 如果b需要交换相邻的到a,那么最少交换次数 = 逆序对数目. 思路: 这道题如果贪心把每个数列的数字尽可能换成一样的是错误的.例二就是HACK数据.既然这样我们就考虑怎么转化答案式子来求最 阅读全文
posted @ 2021-05-15 17:31 acmloser 阅读(64) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:树状数组+二分 完全没想到,fw本f 思路: 这道题实际有点像逆康拓展开.对于某个位置i,在它前面的数有a[i]个.第一头牛是无法确定身高的,但是如果我们从后往前考虑就可以用排除法确定身高. 对于最后一头牛,比它矮的有a[n]个,说明它是1~n中,第a[i]+1个数.我们考虑第n-1 阅读全文
posted @ 2021-05-15 12:04 acmloser 阅读(42) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:树状数组+差分 上一道题的加强版,但还是结合差分数组 思路: 操作一:"C a b c"表示给[a, b]区间中的值全部增加c (-10000 ≤ c ≤ 10000)。 这里还是得用到差分,设b数组为原数组的差分数组,那么此操作就转化为单点修改 操作二:"Q a b" 询问[a, 阅读全文
posted @ 2021-05-15 10:01 acmloser 阅读(26) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:树状数组 确实简单....就是差分+树状数组即可.本蒟蒻还以为又有什么神乎其神的优化..... 思路: 我们先看第一个指令:第一类指令形如 C l r d,表示把数列中第 l∼r 个数都加 d。 l~r区间内+d .单看这个操作容易想到差分. 即 修改b[l]与b[r+1] 再看第二 阅读全文
posted @ 2021-05-15 01:02 acmloser 阅读(39) 评论(0) 推荐(0) 编辑