The Trip On Abandoned Railway(线段树+树状数组)
鏈接:https://ac.nowcoder.com/acm/problem/13891
來源:牛客網
題目描述
There are many ghosts at the abandoned station on unknown railway.
We mark the abandoned stations as 1,2…n according to the order. There are ai ghosts at the ith station.Yakumo Yukari often opens a black hole and makes a train appearing at a certain station. For example, the train appears at the x station, and k ghosts get off at the station. Then there would be k+d ghosts at the x+1 station to get off,k+2×d at x+2 station and so on…There would be k+y?d ghosts at the x+y station to get off (0≤y,x+y≤n). In others words, the numbers getting off at x,x+1,x+2…n station form a tolerance of d arithmetic progression.(you can consider ghosts getting off at the same time.)Onozuka Komachi would comes a certain station to take away the ghosts.(The number of ghosts at the station would become 0)You have the records of trains appearing and Komachi coming. You should tell Komachi how much ghosts at a certain station when she come to there.
輸入描述:
The first line contains an positive integer T(1≤T≤10), represents there are T test cases.
For each test case:
The first line contains three positive integers n,m,d(1≤n≤105,1≤m≤105,1≤d≤1000) - the number of station,the number of records,and the tolerance of the arithmetic progress.
The second line contains n integers a1,a2…an(1≤ai≤1000). Then m lines followed. Each line contains a records and there are two types. 1 x y,indicating train appearing at x station and y ghosts geting off. 2 x y,indicating Komachi coming to the x station. (1≤x≤n,0≤y≤1000)
輸出描述:
For each second records(2 x), output an integer in one line, representing the number of ghosts at the station.Since the ans may be too large, out put tme ans mod 109+7.
示例1
輸入
復制
2
6 6 1
1 2 3 3 2 1
1 1 1
2 1
2 2
2 3
2 4
2 5
5 3 2
1 2 3 4 5
1 3 0
2 4
2 4
輸出
復制
2
4
6
7
7
6
0
說明
There lists the number of ghosts changing at these station.
case1:
1 2 3 3 2 1
2 4 6 7 7 7
0 4 6 7 7 7
0 0 6 7 7 7
0 0 0 7 7 7
0 0 0 0 7 7
0 0 0 0 0 7
case2:
1 2 3 4 5
1 2 3 6 9
1 2 3 0 9
1 2 3 0 9
題意:題目大意:給你一個長度為n的數列和一個公差d,然后m個操作,操作分為兩種,第一種操作有一個x和y,代表從x開始的每個數按照等差數列開始加,x這個位置加上y,x+1這個位置加上y+d,x+2這個位置加上y+2*d,依次遞推;第二種操作有一個x,代表把這個位置的數模1e9+7后輸出,并且這個位置變成零。
思路:挺巧妙的一種思路。
對于1操作來說,x~n都會加上y,我們可以用樹狀數組或者線段樹對x ~n加上y。對于加上的d,跟位置有關系。那么我們在另一棵線段樹上對[x+1,n]都加上1,然后在求的時候,求[1,x]上1的個數,就相當于加上了多少個d。這個題目有個坑點,就是只對答案取模就可以,不用對其余的取模。
線段樹+樹狀數組
努力加油a啊,(o)/~
總結
以上是生活随笔為你收集整理的The Trip On Abandoned Railway(线段树+树状数组)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mike and gcd problem
- 下一篇: Distinct Characters