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

旅游网站的建设背景东莞网站排名推广

旅游网站的建设背景,东莞网站排名推广,网站快捷按钮以什么方式做,泉州建设网站开发http://cplusoj.com/d/senior/p/NOD2301D 前4个操作拿fhq treap是很好维护的。 对于最后一个操作,我们可以这么思考,从kmp的匹配思路出发: 如果我们知道一个串进入的指针 j j j(也就是kmp匹配到的位置)&#xff0c…

http://cplusoj.com/d/senior/p/NOD2301D

前4个操作拿fhq treap是很好维护的。

对于最后一个操作,我们可以这么思考,从kmp的匹配思路出发:

如果我们知道一个串进入的指针 j j j(也就是kmp匹配到的位置),我们是可以直接预处理得到出来的 j ′ j' j 的。

而这个东西是非常好pushup的!我们直接按照左、中、右的顺序就行了。

然后就做完了

#include<bits/stdc++.h>
using namespace std;
#ifdef LOCAL#define debug(...) fprintf(stdout, ##__VA_ARGS__)#define debag(...) fprintf(stderr, ##__VA_ARGS__)
#else#define debug(...) void(0)#define debag(...) void(0)
#endif
//#define int long long
inline int read(){int x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;
ch=getchar();}while(ch>='0'&&ch<='9'){x=(x<<1)+
(x<<3)+(ch^48);ch=getchar();}return x*f;}
#define Z(x) (x)*(x)
#define pb push_back
#define fi first
#define se second
//#define M
//#define mo
#define N 1000010
int n, m, i, j, k, T, rt, Len;
char s[N], str[30], Ps[N]; 
int Q, c, u, fail[30]; 
int Gr[30][30], Fr[30][30]; struct FHQ_treap {int pri[N], w[N], a[N], cnt[N][30], f[N][30], g[N][30]; int ls[N], rs[N], tot; void push_up(int k) {int i; w[k] = 1 + w[ls[k]] + w[rs[k]]; for(i = 1; i <= 26; ++i) cnt[k][i] = cnt[ls[k]][i] + cnt[rs[k]][i] + (a[k] == i); for(i = 0; i <= Len; ++i) {g[k][i] = 0; f[k][i] = i; if(ls[k]) g[k][i] += g[ls[k]][f[k][i]], f[k][i] = f[ls[k]][f[k][i]]; g[k][i] += Gr[a[k]][f[k][i]]; f[k][i] = Fr[a[k]][f[k][i]]; if(rs[k]) g[k][i] += g[rs[k]][f[k][i]], f[k][i] = f[rs[k]][f[k][i]]; }}int merge(int x, int y) {if(!x || !y) return x + y; if(pri[x] < pri[y]) {rs[x] = merge(rs[x], y); push_up(x); return x; }else {ls[y] = merge(x, ls[y]); push_up(y); return y; }}void split(int k, int lim, int &x, int &y) {if(!k) return x = y = 0, void(); if(w[ls[k]] + 1 > lim) {y = k; split(ls[k], lim, x, ls[y]); }else {x = k; split(rs[k], lim - w[ls[x]] - 1, rs[x], y); }push_up(k); }int new_node(int c) {++tot; cnt[tot][c]++; w[tot] = 1; a[tot] = c; pri[tot] = rand(); for(int i = 0; i <= Len; ++i) f[tot][i] = Fr[c][i], g[tot][i] = Gr[c][i]; return tot; }void print(int x) {if(!x) return ; print(ls[x]); printf("%c", (char)(a[x] + 'a' - 1)); print(rs[x]); }
}fhq;signed main()
{#ifdef LOCALfreopen("in.txt", "r", stdin);freopen("out.txt", "w", stdout);#endif
//	srand(time(NULL));
//	T=read();
//	while(T--) {
//
//	}Q = read(); scanf("%s", Ps + 1); Len = strlen(Ps + 1); for(i = 1; i <= Len; ++i) Ps[i] = Ps[i] - 'a' + 1; for(i = 2; i <= Len; ++i) {u = fail[i - 1]; while(u && Ps[u + 1] != Ps[i]) u = fail[u]; if(Ps[u + 1] == Ps[i]) ++u; fail[i] = u; }for(i = 1; i <= Len; ++i) debug("%d ", fail[i]); debug("\n"); for(c = 1; c <= 26; ++c) for(i = 0; i <= Len; ++i) {u = i; while(u && Ps[u + 1] != c) u = fail[u]; if(Ps[u + 1] == c) ++u; Fr[c][i] = u; Gr[c][i] = (u == Len);if(Fr[c][i]) debug("(%c %d) %d %d\n", c + 'a' - 1, i, Fr[c][i], Gr[c][i]); }while(Q--) { int x, y, z, l, r; scanf("%s", str); if(str[0] == 'D' || str[0] == 'R') {l = read(); r = read(); fhq.split(rt, r, y, z); fhq.split(y, l - 1, x, y); rt = fhq.merge(x, z); }if(str[0] == 'I' || str[0] == 'R') {if(str[0] == 'I') j = read(); else j = l - 1; fhq.split(rt, j, x, y); z = 0; scanf("%s", s + 1); m = strlen(s + 1); for(i = 1; i <= m; ++i) {k = fhq.new_node(s[i] - 'a' + 1); z = fhq.merge(z, k); }
//			fhq.print(x); debug("\n"); 
//			fhq.print(y); debug("\n"); 
//			fhq.print(z); debug("\n"); rt = fhq.merge(fhq.merge(x, z), y); }if(str[0] == 'C') {l = read(); r = read(); scanf("%s", s);fhq.split(rt, r, y, z); fhq.split(y, l - 1, x, y); printf("%d\n", fhq.cnt[y][s[0] - 'a' + 1]); rt = fhq.merge(fhq.merge(x, y), z); }if(str[0] == 'S') {l = read(); r = read(); fhq.split(rt, r, y, z); fhq.split(y, l - 1, x, y); printf("%d\n", fhq.g[y][0]); rt = fhq.merge(fhq.merge(x, y), z); }
//		fhq.print(rt); debug("| %d\n", fhq.w[rt]); }return 0;
}
http://www.dtcms.com/wzjs/190657.html

相关文章:

  • 做旅游网站设计的感想qq群推广平台
  • 公司网站怎么免费建腾讯3大外包公司
  • 做网站需要审核资质吗郑州seo使用教程
  • 深圳个性化网站建设公司电话个人网站免费制作平台
  • 宿州网站开发竞价托管外包哪家好
  • 宁波网站推广规划域名服务器查询
  • 网站推广行业赚钱吗百度邮箱登录入口
  • 如何代做网站seo基础入门教程
  • 学做ppt的网站 免费建个人网站的详细步骤
  • 品牌网站建设解决方案西安网络优化哪家好
  • 唐山诚达建设集团网站无锡网络优化推广公司
  • 长春制作公司网站企业网站模板设计
  • 提供手机网站制作公司网站源码
  • 哪个公司做网站建设好关键词汇总
  • 网站建设与管理基础及实训(php版)怎么去优化关键词
  • 海口建站模板厂家搜索引擎提交入口大全
  • 天津定制网站建设商店设计网络宣传的好处
  • 语言做网站自己怎么做网站推广
  • c2c的代表性电商平台四川seo推广方案
  • 做网站推广要会什么web网页制作成品
  • 四川建设网是什么单位厦门seo外包服务
  • web2.0网站开发a内容免费快速网站
  • 网站建设维护实训总结搜索引擎seo如何优化
  • 从零开始做网站seo黄石seo诊断
  • 一个专做特卖的网站外链工具xg下载
  • 深圳专业做网站开发费用cps推广
  • 做培训体系的网站广州各区进一步强化
  • 网站建设的总结与评价爱网站关键词查询工具
  • 用照片做模板下载网站广州百度seo公司
  • 重庆网站建设推荐南宁今日头条最新消息