当前位置: 首页 > news >正文

最好的dm单网站建设深圳做网站500元

最好的dm单网站建设,深圳做网站500元,wordpress应用展示,wordpress iis 404阿狸的打字机 题解 题目中给出的字符串就是构建TrieTrieTrie树的顺序.我们将字符串依次读入,每读入一个小写字符就相当于在TrieTrieTrie树当前节点下插入一个小写字符,读入BBB时,就在TrieTrieTrie树中向父节点移动一步.读入PPP的时候,就做一个标记. 然后对这颗TrieTrieTrie树…阿狸的打字机 题解 题目中给出的字符串就是构建TrieTrieTrie树的顺序.我们将字符串依次读入,每读入一个小写字符就相当于在TrieTrieTrie树当前节点下插入一个小写字符,读入BBB时,就在TrieTrieTrie树中向父节点移动一步.读入PPP的时候,就做一个标记. 然后对这颗TrieTrieTrie树构建ACACAC自动机. 找找规律发现第xxx串在第yyy串中出现的次数就是TrieTrieTrie树上xxx串尾点到yyy串末尾点的树链上,所有能直接或间接通过failfailfail指针跳到xxx串末尾点的点的个数. 观察到自动机上failfailfail指针构成了一颗failfailfail树. 进一步我们发现,所有能直接或间接跳到xxx串末尾点的点就是failfailfail树上,xxx节点的子树大小. 而实际的答案就是failfailfail树上xxx串末尾点的子树与TrieTrieTrie树上xxx到yyy的树链的交集中点的个数. 我们对failfailfail树做一遍dfsdfsdfs序,用这个dfsdfsdfs序就可以查询和维护failfailfail树的子树的信息了. 对这个dfsdfsdfs序列建立一个树状数组. 然后我们对TrieTrieTrie树做一遍dfsdfsdfs,在dfsdfsdfs的过程中,把当前点在树状数组中的dfndfndfn位置111,返回的时候在该位置−1-1−1,这样相当于在TrieTrieTrie树中从当前点到根节点的树链上所有节点都已经在树状数组中激活了,对于当前点作为yyy的询问,在failfailfail树的以xxx为根的子树中计算有多少个点被激活就ok了(树状数组查询前缀和). 代码 #include iostream #include algorithm #include cstring #include queue #include vector #define pr(x) std::cout #x : x std::endl #define rep(i,a,b) for(int i a;i b;i) #define LETTER 26 typedef std::pairint,int pii; const int N 100010; char s[N]; struct Trie{int num,fail,fa;int next[LETTER]; }pool[N]; Trie* const trie pool 1; int cnt; void init() {cnt 0;memset(pool,0,2*sizeof(Trie));trie[0].fail -1; } int now; int pat[N]; int pc; std::vectorint trie_edge[N]; void build() {pc now 0;for(int i 0;s[i];i) {if(s[i] B) now trie[now].fa;else if(s[i] P) pat[pc] now;else {int pos trie[now].next[s[i]-a];if(!pos) {pos cnt;memset(trie[pos],0,sizeof(Trie));trie[pos].fa now;trie_edge[now].push_back(pos);}now pos;}}std::queueint Q;Q.push(0);while(!Q.empty()) {int t Q.front();Q.pop();for(int i 0;i LETTER;i) {int cur trie[t].next[i];if(cur) {Q.push(cur);trie[cur].fail trie[trie[t].fail].next[i];}else cur trie[trie[t].fail].next[i];}} } int bitree[N1]; int lowbit(int x) {return x (-x);} int sum(int pos) {int res 0;for(;pos;pos - lowbit(pos)) res bitree[pos];return res; } void add(int pos,int x) {for(;pos N1;pos lowbit(pos))bitree[pos] x; }std::vectorint edge[N]; int beg[N],end[N]; int idx 0; void dfs1(int u){beg[u] idx;for(int v : edge[u]) dfs1(v);end[u] idx; } std::vectorpii query[N]; int ans[N]; void dfs2(int u) {add(beg[u],1);for(pii p : query[u]) {int x p.first,id p.second;ans[id] sum(end[x])-sum(beg[x]-1);}for(int v : trie_edge[u])dfs2(v);add(beg[u],-1); }int main() {init();std::ios::sync_with_stdio(false);std::cin s;build();for(int i 1;i cnt;i) edge[trie[i].fail].push_back(i);dfs1(0);int m;std::cin m;for(int i 1;i m;i) {int x,y;std::cin x y;query[pat[y]].push_back((pii){pat[x],i});}dfs2(0);for(int i 1;i m;i) {std::cout ans[i] std::endl;}return 0; }
http://www.zqtcl.cn/news/989723/

相关文章:

  • 网站访问速度优化工具网页设计模板图片大全
  • 哪里有手机网站制作公司网页设计与制作心得体会800字
  • 湖南建设厅网站首页简述网站建设的基本思路
  • 蚌埠公司做网站网站开发月薪
  • 怎么更换网站logo推荐几个没封的正能量网站
  • 开网站的宣传图片怎么做php网站建设面试
  • 哪些网站可以下载视频网站建设评价量规
  • 惠州市建设局网站网站模块设计怎么做
  • 群晖可不可以做网站用如何查询商标是否已经被注册
  • 北京欢迎你网站制作公司建设厅和应急管理厅焊工证区别
  • 如何开办网站微信公众平台号申请注册
  • 网站建设找哪个平台浦东区建设工程监督网站
  • 如何创业做网站设计公司工作室
  • 游戏网站建设多少中国煤炭建设协网站
  • 动态图表网站宁津做网站
  • 黑龙江生产建设兵团各连网站成功网站建设案例
  • 一级a做爰精免费网站肇庆网站制作软件
  • wordpress加分页北京优化生育
  • 乐至建设局网站工程项目管理软件哪个好
  • 太原公司网站建立wordpress插件直播
  • 比较有名的diy制作网站做照片视频的网站
  • 河北石家庄建设网站wordpress nginx apache
  • 上海免费网站建设品牌wordpress主题安装失败下载失败
  • 买公司的网站商城系统开发
  • 网页设计国外设计欣赏网站深夜视频在线免费
  • 做网站怎么租用服务器杭州网站建设hzyze
  • .asp 网站北京最新防疫信息
  • 网站上传用什么软件做视频教程114查询
  • 网站小图标素材网站开发需要提供哪些东西
  • 阿里巴巴国际站买家入口百度建网站多少钱