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

做电影网站 资源怎么存放图片链接在线生成器

做电影网站 资源怎么存放,图片链接在线生成器,在北京注册公司流程及费用,网站如何在google提交收录正题 题目链接:http://www.51nod.com/Challenge/Problem.html#problemId1600 题目大意 给出一个字符串sss#xff0c;每次在最后插入一个字符后求它的所有分别子串构出的failfailfail树的深度和。 1≤Q≤1051\leq Q\leq 10^51≤Q≤105 解题思路 考虑两个相等的子串长度为le…正题 题目链接:http://www.51nod.com/Challenge/Problem.html#problemId1600 题目大意 给出一个字符串sss每次在最后插入一个字符后求它的所有分别子串构出的failfailfail树的深度和。 1≤Q≤1051\leq Q\leq 10^51≤Q≤105 解题思路 考虑两个相等的子串长度为lenlenlen那么以后面那个子串末尾结尾的failfailfail有lenlenlen种左端点的情况是指向前面那个子串的。 新插入后所有串的后缀都是新的子串考虑如何统计这些串的答案首先不考虑最后一个位置那么深度和就是前面那次新加的深度和。现在只需要计算新插入那个字符在这nnn个串中的贡献我们可以找出所有和这些串的所有后缀相同的子串都会产生贡献这个可以用SAMSAMSAM统计。 所以可以考虑先把完整的串的SAMSAMSAM建出来再考虑做法每次插入一个字符串的时候先查询它在parentsparentsparents树上到根的路径的边权乘上边的长度和然后再向这条路径上每条边的权值加一。 注意到要路径加权求和所以要加一个树剖就可以了 时间复杂度O(nlog⁡2n)O(n\log^2 n)O(nlog2n) code #includecstdio #includecstring #includealgorithm #define ll long long using namespace std; const int N4e510,P1e97; struct node{int to,next; }a[N]; int n,cnt,last,tot,dfc,p[N],ls[N]; int siz[N],son[N],top[N],dfn[N],rfn[N]; int fa[N],ch[N][26];ll len[N]; char s[N];bool v[N]; struct SegTree{ll w[N2],lazy[N2];void Downdata(int x,int L,int R){if(!lazy[x])return;int mid(LR)1;w[x*2](w[x*2]lazy[x]*(len[dfn[mid]]-len[dfn[L-1]]))%P;w[x*21](w[x*21]lazy[x]*(len[dfn[R]]-len[dfn[mid]]))%P;lazy[x*2]lazy[x];lazy[x*21]lazy[x];lazy[x]0;return;}void Change(int x,int L,int R,int l,int r){if(LlRr){(w[x]len[dfn[R]]-len[dfn[L-1]])%P;lazy[x];return;}int mid(LR)1;Downdata(x,L,R);if(rmid)Change(x*2,L,mid,l,r);else if(lmid) Change(x*21,mid1,R,l,r);else Change(x*2,L,mid,l,mid),Change(x*21,mid1,R,mid1,r);w[x](w[x*2]w[x*21]);return;}ll Ask(int x,int L,int R,int l,int r){if(LlRr)return w[x];int mid(LR)1;Downdata(x,L,R);if(rmid)return Ask(x*2,L,mid,l,r);if(lmid)return Ask(x*21,mid1,R,l,r);return (Ask(x*2,L,mid,l,mid)Ask(x*21,mid1,R,mid1,r))%P;} }T; void Insert(int c){int plast,nplastcnt;len[np]len[p]1;for(;p!ch[p][c];pfa[p])ch[p][c]np;if(!p)fa[np]1;else{int qch[p][c];if(len[q]len[p]1)fa[np]q;else{int nqcnt;len[nq]len[p]1;memcpy(ch[nq],ch[q],sizeof(ch[nq]));fa[nq]fa[q];fa[q]fa[np]nq;for(;ch[p][c]q;pfa[p])ch[p][c]nq;}}v[np]1;return; } void addl(int x,int y){a[tot].toy;a[tot].nextls[x];ls[x]tot;return; } void dfs(int x){siz[x]1;for(int ils[x];i;ia[i].next){int ya[i].to;dfs(y);siz[x]siz[y];len[y]len[y]-len[x];if(siz[y]siz[son[x]])son[x]y;}return; } void dfs2(int x){dfn[dfc]x;rfn[x]dfc;if(son[x]){top[son[x]]top[x];dfs2(son[x]);}for(int ils[x];i;ia[i].next){int ya[i].to;if(yson[x])continue;top[y]y;dfs2(y);}return; } void print(int x) {if(x9)print(x/10);putchar(x%1048);return;} signed main() {freopen(string.in,r,stdin);freopen(string.out,w,stdout);scanf(%d,n);scanf(%s,s1);lastcnt1;for(int i1;in;i)Insert(s[i]-a),p[i]last;for(int i2;icnt;i)addl(fa[i],i);top[1]1;dfs(1);dfs2(1);ll k0,ans0;for(int i1;icnt;i)len[dfn[i]](len[dfn[i]]len[dfn[i-1]])%P;for(int i1;in;i){int xp[i];while(x){k(kT.Ask(1,1,cnt,rfn[top[x]],rfn[x]))%P;xfa[top[x]];}ans(ansk)%P;xp[i];while(x){T.Change(1,1,cnt,rfn[top[x]],rfn[x]);xfa[top[x]];}print((ansP)%P);putchar(\n);}return 0; }
http://www.sadfv.cn/news/367965/

相关文章:

  • Python做网站难不难网站开发组件拖拽
  • 做网站的属于什么专业哈尔滨网站建设公司那家好
  • 友汇网站建设一般多少钱南宁企业网站制作
  • 万全孔家庄做网站百度容易收录的网站
  • 哈尔滨市做网站自己制作小程序怎么做
  • 做外贸推广自己网站企业网站源码去一品资源网
  • 2019做网站图片用什么格式wordpress 怎么看
  • 网站服务器年线太长重庆酉阳网站设计公司
  • 网站建设与管理的体会手机网站cms
  • 英语培训网站源码拖拽式制作网站
  • 洪宇建设集团公司网站wordpress生成小程序
  • 金融网站怎么做湖南企业做网站
  • 怎么做文学动漫网站如何做招聘网站的对比
  • 1核2g+做网站好看的网站色彩搭配
  • 商城网站的管理用户模块龙岩市住房与城乡建设部网站
  • 群晖可不可以做网站用南京网站公司
  • 福州 网站设计提供模板网站制作多少钱
  • 温州人才网站开发app开发公司排行榜做软件的公司
  • 最好的商业网站西安工程网站建设
  • 网站建设哪里去学安徽网络优化公司
  • 网站建设需要哪些书籍网站背景色代码
  • 网站开发好难呀免费模板网站制作
  • 网站建设得缺点vr技术对网站建设的影响
  • 湖北网站优化公司网站开发都用什么语言
  • seo网站外包公司宁波网络推广软件
  • 代做网站dw网站设计步骤
  • 站长平台链接提交做淘宝店头的网站
  • 建设部规范网站怎样给公司做免费网站
  • seo网站建设步骤网站建设有没有资质
  • 网站建设需要英语吗网址英文