https://shanlunjiajian.github.io/2023/05/21/dfa-tech/
好像是叫 moore 算法,一个 vector
代表一个等价类,col
是所属等价类,这个是初始的时候 accept 状态放在一个等价类里,reject 状态放在一个等价类里,其余状态放在一个等价类里。对每种出边检查同一等价类的此类出边是否指向了不同等价类,根据指向的等价类的不同进行分裂。
while(1){
int lac=cct;
for(int o=0;o<m;o++){
for(int i=1;i<=lac;i++)if(vec[i].size()>1){
int tmp=cct;
for(auto j:vec[i]){
int go=col[tr[j][o]];
if(!vis[go])
vis[go]=++cct;
vec[vis[go]].pb(j);
}
for(auto j:vec[i])vis[col[tr[j][o]]]=0;
vi().swap(vec[i]);
swap(vec[i],vec[cct]);--cct;
for(auto j:vec[i])col[j]=i;
for(int t=tmp+1;t<=cct;t++)
for(auto j:vec[t])
col[j]=t;
}
}
if(cct==lac)break;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
2022-10-09 「题解」Codeforces 1572B Xor of 3