ggg

题目描述

小周猪猪是一个肥肥可爱萌萌哒的小猪,在中华猪民共和国享有超高人气。现在是一年一度的猪猪生日,小周猪猪决定发放 n n n 个名额给它的粉丝参加小周猪猪的生日Party:每一份参加的猪都有机会给小周猪猪送礼物

现在有 n n n个粉丝,分别排成一排,每一个粉丝上都有一个对小周猪猪的喜爱值,且范围是 [ 1 , n ] [1,n] [1,n] ,规定每一个粉丝的喜爱值两两不相同。已知有m次送礼物的活动,每一次的送礼物过程如下:

  • 每一次小周猪猪会随机报出一个 [ 1 , n ] [1,n] [1,n] 中的任意数字 k k k,那么每一个编号 ≤ k ≤k k 的幸运粉丝都可以离开原始列队,进入小周猪猪的小房子送给小周猪猪价值一个亿的礼物。
  • 送完礼物以后,这些人会按照从小到大的顺序重新回到队列中,填补队列中空缺的位置。
  • 最后,每一个粉丝都会向右看其它的小猪,对于位置 i i i 的小猪,和位置 j j j 的小猪,若满足 i < j i<j i<j ,且 a i > a j a_i>a_j ai>aj ,那么就会产生 g j g_j gj 的怨气值, g i g_i gi 值表示队列中位置 i i i所对应的系数。每一次的总怨气值为所有怨气值之和。

现在,我们需要知道初始怨气值和每一次送礼物结束以后的怨气值。没错,这是小周猪猪对你的考验;当你完成了这个考验的时候,你也会拥有和粉丝一样的幸运待遇:给小周猪猪送礼物 a n d and and买很多很多好吃的给小周猪猪的机会哦!

输入格式

第一行:一个数 n n n,表示粉丝数。一个数 m m m,表示送礼物次数。
第二行:一共有 n n n个数,第 i i i个数为 a i a_i ai,表示粉丝的喜爱值。
第三行:一共有 n n n个数,第 i i i个数为 g i g_i gi,表示位置i的系数。
接下来 m m m行:每一行都是小周猪猪的报出的数字。

输出格式

第一行:一个数,表示初始怨气值。
接下来 m m m行:每行一个数,表示每一次送礼物以后的怨气值之和。

输入样例1

5 5
5 3 2 4 1
43 23 24 5 77
1
2
3
4
5

输入样例2

384
384
307
206
129
0

数据规模与约定

对于 30 % 30\% 30%的数据,保证 n ≤ 100 n≤100 n100.

对于另外 30 % 30\% 30%的数据,保证 m ≤ 5 m\leq 5 m5.

对于 100 % 100\% 100%的数据,保证:

  • 1 ≤ n , m ≤ 3 , 000 , 000 1≤n,m≤3,000,000 1n,m3,000,000.
  • a i a_i ai 1 − n 1-n 1n的排列.
  • 1 ≤ g i ≤ 100 , 000 , 000 1≤g_i≤100,000,000 1gi100,000,000

题解

举个例子,如果是4 2 1 5 3,如果小周猪猪报出的是3,那么就会变成4 1 2 5 3.
此时1 2 3不会有任何的贡献。

根据特性我们就发现当某一个数x排序时,小于等于x的数都没有贡献,计算大于这个数的贡献即可。

由于询问此时比较多,记录最大值,再用一个后缀和记录一下即可。

时间复杂度:O(nlogn).

你可能感兴趣的:(树状数组)