题目链接:http://codeforces.com/contest/1119/problem/D
题目大意:
有N行数,每行有1E18+1个数。
第i行数以Si开头,并且是一个等差为1的递增数列,比如第i行的数字为Si,Si+1,Si+2,Si+3…
现在有q个询问,每个询问给出l和r,问在这N行数中,第l到第r列中有多少个不同的数。
题解:
令w=r-l+1.
对于第i行数,如果s[i+1]-s[i]比w大的话,那么其贡献只能为w;如果s[i+1]-s[i]比w小,那么其贡献为s[i+1]-s[i].
即第i行数对答案的贡献为min(s[i+1]-s[i],r-l+1).
令d[i]=s[i+1]-s[i].(i<n)
则第i行数的贡献为min(d[i],w).
Ans= ∑ i = 1 n m i n ( d [ i ] , w ) \sum_{i=1}^n{min(d[i],w)} ∑