題意:長度為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的不同子串行...