几何
几何
比赛时候唐了,连状态都没想到。
记录一下 dp 的惯用优化方法。
思路
(此处串
设
如果可以就是
若
若
这样做会超时,考虑优化。
把
设状态
这样子就把第三维压进了状态里。
对于
对于第二种转移,
于是就可以愉快的 AC 了。
CODE
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int maxn=5e5+5;
int ns,nx,ny;
char s[maxn],x[maxn],y[maxn];
ll f[maxn][60],g[30];
inline ll work(ll x)
{
ll op=(x>>(ny-1))&1;
x^=(op<<(ny-1));
x=(x<<1)|op;
return x;
}
inline void clr()
{
for(int i=0;i<=ns+1;i++) for(int j=0;j<=nx+1;j++) f[i][j]=0;
for(int i=1;i<=26;i++) g[i]=0;
}
int main()
{
int _;
scanf("%d",&_);
while(_--)
{
cin>>s+1>>x>>y;
ns=strlen(s+1),nx=strlen(x),ny=strlen(y);
clr();
for(int i=0;i<ny;i++) g[y[i]-'a'+1]^=1ll<<i;
f[0][0]=1;
for(int i=1;i<=ns;i++)
{
int ch=s[i]-'a'+1;
for(int j=0;j<nx;j++)
{
if(s[i]==x[j])
{
f[i][(j+1)%nx]|=f[i-1][j];
}
ll st=f[i-1][j]&g[ch];
f[i][j]|=work(st);
}
}
if(f[ns][0]&1) puts("Yes");
else puts("No");
}
}
分类:
动态规划/dp / 树上 dp
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现