bzoj4032 HEOI2015 最短不公共子串

2022-05-15 06:01:42 字數 2724 閱讀 1865

字尾自動機+序列自動機

序列自動機這東西好像很高階的樣子。。。。。。

其實很簡單的啦。。。。。。

詳細可以看一下我的部落格序列自動機

對字串a構建字尾自動機$str_a$和序列自動機$seq_a$;類似地,對字串b也構建字尾自動機$str_b$和序列自動機$seq_b$。

然後對於4個詢問我們分別拿出1個自動機,如第乙個詢問拿出$str_a$和$str_b$(下面以第乙個詢問為例):

記$vis[x][y]$表示在$str_a$中到編號為$x$的點且在$str_b$中到編號為$y$的點的最短長度是多少,這個可以$bfs$。

#include#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

//#include適用於cf,uoj,但不適用於poj

using

namespace

std;

typedef

long

long

ll;typedef

double

db;typedef pair

pii;

typedef complex

cp;#define mmst(a,v) memset(a,v,sizeof(a))

#define mmcy(a,b) memcpy(a,b,sizeof(a))

#define fill(a,l,r,v) fill(a+l,a+r+1,v)

#define re(i,a,b) for(i=(a);i<=(b);i++)

#define red(i,a,b) for(i=(a);i>=(b);i--)

#define ire(i,x) for(typedef(x.begin()) i=x.begin();i!=x.end();i++)

#define fi first

#define se second

#define m_p(a,b) make_pair(a,b)

#define p_b(a) push_back(a)

#define sf scanf

#define pf printf

#define two(k) (1<

inline t sqr(t x)

template

inline void upmin(t &t,t tmp)

template

inline void upmax(t &t,t tmp)

const db eps=1e-9

;inline

int sgn(db x)

const db pi=acos(-1.0

);inline

intgint()

for(;z!=eof && isdigit(z);res=res*10+z-'

0',z=getchar());

return (neg)?-res:res;

}inline ll gll()

for(;z!=eof && isdigit(z);res=res*10+z-'

0',z=getchar());

return (neg)?-res:res;

}const

int maxn=2000

;struct

string_automation

}a[2*maxn+100];int

mid;

introot,end;

inline

int newnode()

inline

void clear()

inline

void add(int

x)

}end=last;

}inline

void insert(char *s)

};struct

sequence_automation

}a[maxn+100];int

mid;

int last[27

]; inline

int newnode()

inline

void clear()

inline

void add(int

x)

inline

void insert(char *s)

};char a[maxn+100],b[maxn+100

];string_automation str_a,str_b;

sequence_automation seq_a,seq_b;

int vis[2*maxn+100][2*maxn+100

];queue

q;template

inline int bfs(t1 &a,t2 &b)

}return -1

; }

intmain()

view code

BZOJ2743 HEOI2012 採花 題解

蕭薰兒是古國的公主,平時的一大愛好是採花。今天天氣晴朗,陽光明媚,公主清晨便去了皇宮中新建的花園採花。花園足夠大,容納了n朵花,花有c種顏色 用整數1 c表示 且花是排成一排的,以便於公主採花。公主每次採花後會統計採到的花的顏色數,顏色數越多她會越高興!同時,她有一癖好,她不允許最後自己採到的花中,...

遞推 Bzoj3612 Heoi2014 平衡

下課了,露露 花花和萱萱在課桌上用正三稜柱教具和尺子擺起了乙個 蹺蹺板 這個 蹺蹺板 的結構是這樣的 底部是乙個側面平行於地平面的正三稜柱教具,上面 擺著乙個尺子,尺子上擺著若干個相同的橡皮。尺子有 2n 1 條等距的刻度線,第 n 1 條 刻度線恰好在尺子的中心,且與正三稜柱的不在課桌上的稜完全重...

bzoj4027 heoi2015 兔子與櫻花

time limit 10 sec memory limit 256 mb submit 360 solved 187 submit status discuss 很久很久之前,森林裡住著一群兔子。有一天,兔子們突然決定要去看櫻花。兔子們所在森林裡的櫻花樹很特殊。櫻花樹由n個樹枝分叉點組成,編號從0...