2018.06.29 NOIP模拟 区间(前缀和差量)

传送门
这题数据有点吓人,考试时搞了一个多小时发现读错了题就知道自己没救了,匆忙之中写了60分暴力,结果 30 30 30分直接 R E RE RE,还有 30 30 30 T L E TLE TLE了,弄得我不知道怎么是好,下来听了听题解,发现其实并没有我想的那么复杂。

那么我们首先要算算效率,如果我们跑个均摊 O ( n 2 ) O(n^2) On2的算法似乎刚好卡住 2 s 2s 2s时限,于是再仔细思考一下,如果我们维护一个 x x x y y y的区间的出现次数的前缀和,显然如果两个前缀和的值相同的话,这两个前缀和之间形成的区间肯定 x x x y y y出现的次数是相同的,这样可以修改答案。但我们再细算一下,对于每次询问,我们要关心的只是 x x x y y y的位置,而其他位置的前缀和显然可以对之前的前缀和进行继承。所以这个地方一个小技巧,我们先将 a a a数组离散化,然后用动态数组 v e c t o r vector vector来记录每种数的下标。直接在动态数组中跳下标统计答案就行了。其他细节详见代码。
代码

你可能感兴趣的:(#,小技巧)