原題要求去掉m個元素後不同的子串行個數,可轉化為求,長度為n-m的不同的子串行的個數。
dp[i][j]表示以數字i結尾的長度為j的子串行個數,ans[j]表示長度為j的子串行個數。
列舉序列,因為只要求ans[n-m],假設當前是第i個數字,那麼更新時只需要更新[i-m,i]即可,
因為更小的長度的子串行不可能形成n-m長度的子串行。
然後,通過dp陣列和ans陣列的更新,保證不重複計數。
**:
#includeusing namespace std;
const int maxn=1e5+5;
const int mod=1e9+7;
int t,n,m,k;
int a[maxn],dp[15][maxn],ans[maxn];
int main()
memset(ans,0,sizeof(ans));
memset(dp,0,sizeof(dp));
ans[0]=1;
for(int i=1;i<=n;i++)
} cout<<(ans[n-m]+mod)%mod<<"\n";
} return 0;
}
牛客寒假多校第一場A
題目描述 在絕地求生 吃雞 遊戲裡,不同的槍枝有不同的威力,更是可以搭配不同的配件,以提公升槍枝的效能。每一把槍都有其威力及其可裝備配件種類。每乙個配件有其所屬種類,可以為槍枝提供威力的百分比加成。每一把槍只能裝備乙個同類配件。給你n把槍枝和m個配件,槍的威力為p,可裝備的配件數量為k,為k個不同型...
牛客多校第一場 B Inergratiion
傳送門 給你乙個 根據線代的知識 我們可以將分母裂項,然後根據 int fracdx frac int frac 2 d frac frac 可以推得 我們的答案就是裂項後求出來的係數乘上 frac 詳情請看d神推導吧 include include include include include ...
2020 牛客多校第一場
a b suffix array f infinite string comparision jzk開場提出了兩倍最大的長度,然後 dh 說直接比較a b和b a即可,由於是訓練賽,不想寫太長的 然後交了一發直接比較的 就過了 includeusing namespace std string s1...