51nod 1202 子串行個數

2021-08-08 16:20:56 字數 950 閱讀 1803

子串行的定義:對於乙個序列a=a[1],a[2],……a[n]。則非空序列a』=a[p1],a[p2]……a[pm]為a的乙個子串行,pi屬於1..n。

例如4,14,2,3和14,1,2,3都為4,13,14,1,2,3的子串行。對於給出序列a,有些子串行可能是相同的,這裡只算做1個,請輸出a的不同子串行的數量。由於答案比較大,輸出mod 10^9 + 7的結果即可。

第1行:乙個數n,表示序列的長度(1 <= n <= 100000)

第2 - n + 1行:序列中的元素(1 <= a[i] <= 100000)

輸出a的不同子串行的數量mod 10^9 + 7。

input

4

1 2 3 2

output

**很好看懂吧quq

算了我懶得打直接貼**quq

p黨依舊瑟瑟發抖quq

var n,i,mm:longint;

num,a,dp:array[0..100005] of longint;

begin

mm:=1000000007;

readln(n);

for i:=1

to n do readln(a[i]);

fillchar(num,sizeof(num),0);

for i:=1

to n do

begin

if num[a[i]]=0

then dp[i]:=(dp[i-1]*2+1) mod mm

else dp[i]:=(dp[i-1]*2-dp[num[a[i]]-1]+mm) mod mm;

num[a[i]]:=i;

end;

writeln(dp[n]);

end.

51nod 1202 子串行個數

子串行的定義 對於乙個序列a a 1 a 2 a n 則非空序列a a p1 a p2 a pm 為a的乙個子串行,其中1 p1例如4,14,2,3和14,1,2,3都為4,13,14,1,2,3的子串行。對於給出序列a,有些子串行可能是相同的,這裡只算做1個,請輸出a的不同子串行的數量。由於答案比...

51Nod1202子串行個數

子串行的定義 對於乙個序列a a 1 a 2 a n 則非空序列a a p1 a p2 a pm 為a的乙個子串行,其中1 p1例如4,14,2,3和14,1,2,3都為4,13,14,1,2,3的子串行。對於給出序列a,有些子串行可能是相同的,這裡只算做1個,請輸出a的不同子串行的數量。由於答案比...

51Nod1202 子串行個數

子串行的定義 對於乙個序列a a 1 a 2 a n 則非空序列a a p1 a p2 a pm 為a的乙個子串行,其中1 p1 p2 pm n。例如4,14,2,3和14,1,2,3都為4,13,14,1,2,3的子串行。對於給出序列a,有些子串行可能是相同的,這裡只算做1個,請輸出a的不同子串行...