51Nod1202 子串行個數

2021-08-04 17:25:28 字數 906 閱讀 1810

子串行的定義:對於乙個序列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的不同子串行的數量。由於答案比較大,輸出mod 10^9 + 7的結果即可。

input

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

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

output

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

input示例

4 1

2 3

2 output示例

13題解

dp[i]表示到i為止有多少個逆序對,記錄一下前乙個相同的數出現的位置。

**

#include

#define n 500005

#define ll long long

#define inf 100000000

#define mod 1000000007

using namespace std;

inline int

read()

while (ch>='0'&&ch<='9') x=x

*10+ch-'0',ch=getchar();

return

x*f;

}int n,dp[100005],last[100005];

int main()

printf("%d",dp[n]);

return

0;}

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的不同子串行的數量。由於答案比...

51nod 1202 子串行個數

子串行的定義 對於乙個序列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的不同子串行的數量。由於答...