HDU 2896 病毒侵襲

2021-06-09 22:43:49 字數 1644 閱讀 8242

那什麼可見字元是坑爹的吧……

#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;

#pragma pack(4)

const double eps = 1e-8;

const double pi = acos(-1.0);

const int inf = 0x7f7f7f7f;

const __int64 inf = 0x7f7f7f7f7f7f7f7fll;

#define loop(a,n) \

for(int i=0;n>i;i++) \

coutfor(int j=0;m>j;j++) \

cout#define less(a,b) (((b)-(a))>eps)

#define greq(a,b) (((a)-(b))>-eps)

#define leeq(a,b) (((b)-(a))>-eps)

#define equl(a,b) (fabs((a)-(b))(b)?(a):(b))

#define lmin(a,b) ((a)<(b)?(a):(b))

#define fmax(a,b) (gret(a,b)?(a):(b))

#define fmin(a,b) (less(a,b)?(a):(b))

const int maxv = 100002;

struct node

trie[maxv];

bool vis[maxv];

int _index,q[maxv];

void clear(void)

int malloc(void)

return _index++;

}int fail(int root,int c)

return root;

}void insert(int root,char p,int v)

trie[root].cnt=v;

}void build(int root)}}

}}bool hash[maxv];

int query(int root,char t)

}else break;}}

}return cnt;

}int n,m;

char a[maxv],b[maxv];

int main()

build(root);

scanf("%d\n",&m);

int tot=0,ans;

for(int i=1;m>=i;i++)

printf("\n");

tot++;}}

printf("total: %d\n",tot);

}return 0;

}

hdu2896 病毒侵襲

剛剛看完ac自動兩天就發現了這道自動機的題目,這題不是很難,但是有幾個細節需要注意一下,首先 中的病毒型別不能重複,也就是說沒有可能出現兩個同樣的病毒,我的處理方法是利用set這樣的話判重和排序都省了,其次輸出的 編號和最終的病毒 數不是一樣的 我就是卡在這裡一直wa 爆棧的童鞋記得size是128...

hdu 2896 病毒侵襲

本題需要注意幾個方面 1 字元的範圍是可見的ascll碼字元,陣列要開到127。2 雖然題目的資料弱了,但是自己要考慮的周全。資料一 2 sherhe2 shesher答案 web 1 2 web 2 1 2 total 2資料二 2aaa 1aaaa答案 web 1 1 2 total 1 inc...

Hdu 2896 病毒侵襲

題意 給出n個模式串,再給出m個字串,問這些字串包含那些模式串 思路 ac自動機,先以模式串構建字典樹,再以字典樹構建fail標記,fail標記類似於kmp的next字首陣列,可以跳轉到重複字首的結尾,查詢的時候利用fail標記就可以提高多模式串匹配的效率 include include inclu...