10/0/40
第一题
就是一个trie树
感觉挺简单
做了之后,也觉得没毛病
然后10分
还是不要太自信的好
上一发正解
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
#include<ctime>
#include<cmath>
#include<algorithm>
using namespace std;
int n,tot=1,ans;
int son[800005][26],a[800005],b[800005];
char str[80000];
void add(int *a)
{
int x=1,l=strlen(str);
for(int i=0;i<l;i++)
{
int c=str[i]-'a';
if(!son[x][c]) son[x][c]==++tot;
x=son[x][c];
a[x]++;
}
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++) scanf("%s",str),add(a);
for(int i=1;i<=n;i++) scanf("%s",str),add(b);
for(int i=1;i<=tot;i++) ans+=min(a[i],b[i]);
cout<<ans;
return 0;
}
第二题
爆零 dp转移方程推了好久,还T**推错了
最后交了一个n^4的
就完了。。
正解dp
d[1][1][1]=1;
for(int i=2;i<=200;i++)
{
for(int j=1;j<=i;j++)
{
for(int k=1;k<=i;k++)
{
d[i][j][k]=d[i-1][j][k]*(i-2);
if(j>1) d[i][j][k]+=d[i-1][j-1][k];
if(k>1) d[i][j][k]+=d[i-1][j][k-1];
d[i][j][k]%=MOD;
}
}
}
第三题
交之前发现自己的思维有漏洞
幸好大佬给了我40分
谢谢谢谢谢谢谢谢
这场很差。。