51Nod 1202 子串行個數 線性DP 套路

2021-08-10 17:39:21 字數 425 閱讀 3627

題意:長度為n的序列 問有多少個不同的子串行? i.e: n=4 a= ans=4;

n,a[i]<=1e5. 

設dp[i]為:以下標i 結尾的不同的子串行個數

如果序列中每個數都不同 則dp[i]=( ∑dp[j] ) +1.j則從前往後dp,只保留x最後一次出現位置的dp值 每次累加字首和即可.

#include #include #include using namespace std;

typedef long long ll;

const int n=1e6+5,mod=1e9+7;

int n,a[n],last[n];

ll dp[n],f[n];

int main()

ll ans=0;

for(int i=1;i<=n;i++)

cout<

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的不同子串行...