牛客練習賽60
連結:https://ac.nowcoder.com/acm/contest/4853#question
還有幾個題如果有空就做
A
一位一位做就可以了
B
沒有三點共線的話直接考慮每條邊的貢獻就可以了
C
序列自動機建起來,然後胡亂DP一波就可以了
順便把模板丟在這裡
#include<cstdio>
#include<algorithm>
#include<iostream>
#include<cstring>
#include<vector>
using namespace std;
typedef long long LL;
const int N=1005;
const int MOD=1e9+7;
int add (int x,int y) {x=x+y;return x>=MOD?x-MOD:x;}
int mul (int x,int y) {return (LL)x*y%MOD;}
int dec (int x,int y) {x=x-y;return x<0?x+MOD:x;}
int Pow (int x,int y)
{
if (y==1) return x;
int lalal=Pow(x,y>>1);
lalal=mul(lalal,lalal);
if (y&1) lalal=mul(lalal,x);
return lalal;
}
struct qq
{
int son[N][26];
int last[N];
int par[N];
int tot;
void Ins (int x)
{
int np=++tot;
for (int u=0;u<26;u++)
for (int i=last[u];i!=0&&son[i][x]==0;i=par[i])
son[i][x]=np;
par[np]=last[x];last[x]=np;
}
}a;
char ss[N];
int f[2][N];
int main()
{
int n,k;
scanf("%d%d",&n,&k);
scanf("%s",ss+1);
for (int u=0;u<26;u++) a.last[u]=1;a.tot=1;
for (int u=1;u<=n;u++) a.Ins(ss[u]-'a');
int op=0;f[0][1]=1;
for (int j=1;j<=k;j++)
{
op^=1;memset(f[op],0,sizeof(f[op]));
for (int u=1;u<=a.tot;u++)
{
for (int i=0;i<26;i++)
if (a.son[u][i]!=0)
f[op][a.son[u][i]]=add(f[op][a.son[u][i]],f[op^1][u]);
}
}
int ans=0;for (int u=1;u<=a.tot;u++) ans=add(ans,f[op][u]);
printf("%d\n",ans);
return 0;
}
D
E
F
相關文章
- 牛客練習賽
- 牛客練習賽 26
- 牛客練習賽 71 AC
- 牛客練習賽129 A-數數
- 牛客練習賽26 A 平面【遞推】
- 牛客周賽 Round 36 (小白練習記)
- 牛客練習賽73 D題:離別
- 【牛客訓練記錄】牛客周賽 Round 69
- 【牛客訓練記錄】牛客周賽 Round 70
- Mysql 練習(牛客網)MySql
- 牛客練習賽40 B 小A與任務(貪心)
- 牛客小白月賽95 (賽前的練習之我是小菜雞)
- 牛客練習賽14B 區間的連續段
- 牛客練習賽27【C 水圖 dfs求最長路】
- 牛客練習賽26 C 城市規劃【思維+貪心】
- 牛客SQL練習第21題SQL
- 牛客練習賽74 E CCA的期望(算概率的技巧+floyd處理)
- 牛客周賽48
- 牛客小白月賽105
- 牛客周賽 Round 63
- 牛客周賽 Round 57
- 牛客周賽 Round 56
- 牛客小白月賽97
- 牛客小白月賽88
- 牛客周賽 Round 40
- 牛客小白月賽89
- 牛客周賽 Round 47
- 牛客周賽 Round 1
- 牛客周賽 Round 3
- 牛客周賽 Round 7
- 牛客小白月賽94
- 牛客周賽 Round 8
- 牛客周賽Ronud 46
- 牛客周賽 Round 38
- 牛客挑戰賽58
- 牛客小白周賽9
- 數理統計筆記[牛客專項練習]筆記
- 牛客周賽 Round 67 A~F