牛客暑期多校第一場 E Removal dp

2021-09-19 07:58:13 字數 615 閱讀 3109

原題要求去掉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...