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

如何做自己的公司网站杭州网络优化公司排名

如何做自己的公司网站,杭州网络优化公司排名,百度怎么发布网站,杭州网站建设蒙特其实很水的一道题吧.... 题意是#xff1a;每次给定一个串\(T\)以及\(l, r\)#xff0c;询问有多少个字符串\(s\)满足#xff0c;\(s\)是\(T\)的子串#xff0c;但不是\(S[l .. r]\)的子串 统计\(T\)本质不同的串#xff0c;建个后缀自动机 然后自然的可以想到#xff0c… 其实很水的一道题吧.... 题意是每次给定一个串\(T\)以及\(l, r\)询问有多少个字符串\(s\)满足\(s\)是\(T\)的子串但不是\(S[l .. r]\)的子串 统计\(T\)本质不同的串建个后缀自动机 然后自然的可以想到对于每个\(T\)的子串它对应了一个\(right\)集合 那么它应该会被这个\(right\)集合所限制 考虑对于每个\(i\)求出最小的\(l\)使得\(T[l .. i]\)存在于\(S[l..r]\)中 这个可以套个线段树转移 然后就没了..... 如果不需要统计\(T\)本质不同的串又怎么做呢 统计的时候乘上\(right\)集合大小就行 #include cstdio #include cstring #include iostream #include algorithm using namespace std;#define ri register int #define ll long long #define rep(io, st, ed) for(ri io st; io ed; io ) #define drep(io, ed, st) for(ri io ed; io st; io --)#define gc getchar inline int read() {int p 0, w 1; char c gc();while(c 9 || c 0) { if(c -) w -1; c gc(); }while(c 0 c 9) p p * 10 c - 0, c gc();return p * w; }const int sid 1005000; const int eid 30000000 5;struct SAM {int id, fa[sid], mx[sid];int go[sid][26], mc[sid];inline int newnode() { id;fa[id] mx[id] mc[id] 0;memset(go[id], 0, sizeof(go[id]));return id;}inline void init() {id 0;newnode();}inline int extend(int lst, int c, int pos) {int np newnode(), p lst;mx[np] mx[p] 1; mc[np] pos;for( ; p !go[p][c]; p fa[p]) go[p][c] np;if(!p) fa[np] 1;else {int q go[p][c];if(mx[p] 1 mx[q]) fa[np] q;else {int nq newnode(); mx[nq] mx[p] 1;fa[nq] fa[q]; fa[np] fa[q] nq;memcpy(go[nq], go[q], sizeof(go[q]));for( ; p go[p][c] q; p fa[p]) go[p][c] nq;}}return np;}} S, T;int q, n, m, seg; char s[sid], t[sid]; int nc[sid], ip[sid], w[sid], val[sid]; int rt[sid], ls[eid], rs[eid];inline int merge(int x, int y) {if(!x || !y) return x y;int o seg;ls[o] merge(ls[x], ls[y]);rs[o] merge(rs[x], rs[y]);return o; }inline void ins(int o, int l, int r, int p) {o seg;if(l r) return;int mid (l r) 1;if(p mid) ins(ls[o], l, mid, p);else ins(rs[o], mid 1, r, p); }inline bool qry(int o, int l, int r, int ml, int mr) {if(ml r || mr l || ml mr || !o) return 0;if(ml l mr r) return 1;int mid (l r) 1;if(qry(ls[o], l, mid, ml, mr)) return 1;else return qry(rs[o], mid 1, r, ml, mr); }inline void init() {S.init();int lst 1;rep(i, 1, n) lst S.extend(lst, s[i] - a, i);int id S.id;rep(i, 1, id) nc[S.mx[i]] ;rep(i, 1, n) nc[i] nc[i - 1];rep(i, 1, id) ip[nc[S.mx[i]] --] i;rep(i, 1, id) if(S.mc[i]) ins(rt[i], 1, n, S.mc[i]);drep(i, id, 1) {int o ip[i], f S.fa[o];rt[f] merge(rt[f], rt[o]);} }void Match(int l, int r) {int o 1, nl 0;rep(i, 1, m) {int c t[i] - a;while(1) {int nxt S.go[o][c], f S.fa[o];if(nxt qry(rt[nxt], 1, n, l nl, r)) {nl ; o nxt;break;}if(!nl) break; nl --;if(nl S.mx[f]) o f;}w[i] nl;} }int main() {scanf(%s, s 1);n strlen(s 1);init(); q read();rep(i, 1, q) {scanf(%s, t 1);m strlen(t 1);T.init();int lst 1;rep(j, 1, m) lst T.extend(lst, t[j] - a, j);int l read(), r read();Match(l, r);int id T.id;rep(i, 1, id) nc[i] val[i] 0;rep(i, 1, id) nc[T.mx[i]] ;rep(i, 1, id) nc[i] nc[i - 1];rep(i, 1, id) ip[nc[T.mx[i]] --] i;drep(i, id, 1) {int o ip[i], f T.fa[o];if(T.mc[o]) val[o] w[T.mc[o]];val[f] max(val[f], val[o]);}ll ans 0;rep(i, 1, id) ans max(T.mx[i] - max(T.mx[T.fa[i]], val[i]), 0);printf(%lld\n, ans);}return 0; } 转载于:https://www.cnblogs.com/reverymoon/p/10029355.html
http://www.pierceye.com/news/302374/

相关文章:

  • 网页设计怎么建立网站网站馆店精准引流怎么推广
  • iis6建设网站上海到北京飞机航班查询
  • 做网站 创业 流程什么是网站标题
  • 怎么查询菠菜网站做没作弊沙朗做网站公司
  • 网站的建设周期与阶段广州王牌seo
  • 连江建设局网站手机网站建设套餐内容
  • 收录网站排名wordpress 搜索过滤
  • 上海网站建设代码长春又出现一例
  • 国外包装设计欣赏网站wordpress4.9.4环境要求
  • 免费域名网站查询好的营销网站设计公司
  • 网站说服力在百度上怎么建立网站
  • 医疗网站模板下载qq音乐的网站建设信息
  • 商务网站开发的的基本流程网站 设计 趋势
  • php mysql网站开发实例卖货平台排名前十
  • 房地产管理局网站建设银行北京市分行网站
  • 无锡哪家网站做的好黄骅市人事考试网
  • 芜湖seo网站优化淘宝官网首页手机版
  • 用付费网站做推广ui网站一般建好大
  • 四川建设行业网站有哪些最新体育新闻头条
  • 湘潭网站优化公司wordpress会员积分邀请
  • 腾讯网静态网站建设西宁网站建设公司排行
  • pc网站优势买完网站怎么建设
  • 网站设计与制作用什么软件外包加工网官网下载安装
  • 商城网站设计企业建一个o2o网站
  • 营销型网站创建php源码资源网
  • 优秀设计师网站在上海做兼职去哪个网站搜索
  • 教育行业网站建设房屋3d立体设计软件
  • 海珠免费网站建设php网站系统
  • 建设银行网站信息补充施工企业奖惩制度范本
  • 做拍卖网站多少钱办公室装修铺哪种地板