又是被水题坑了。。。

一直想不出来看题解说要什么主席树,于是开始打离线算法

结果打到一半发现要强制在线。。No!!!

发现直接AC自动机似乎可做?树剖之后在AC自动机上跑的时候判断一下不就好了吗!连线段树都不要

让后快乐切掉,速度还可以(废话,人家N^2暴力都跑得飞快)

#pragma GCC opitmize("O3")
#pragma G++ opitmize("O3")
#include<queue>
#include<stdio.h>
#include<string.h>
#include<algorithm>
#define vs (*s-'a')
#define N 100010
using namespace std;
struct AcAutomation{int son[N*10][26],f[N*10],c[N*10],cnt;queue<int> q; vector<int> p[N*10];inline void clear(){ cnt=1; }inline void insert(char* s,int pos){int x=1,l=0;for(;*s;++s,++l)x=son[x][vs]?son[x][vs]:son[x][vs]=++cnt;c[x]=l; p[x].push_back(pos);}inline void build(){p[1].push_back(N); sort(p[1].begin(),p[1].end());for(int i=0;i<26;++i)if(!son[1][i]) son[1][i]=1;else q.push(son[1][i]),f[son[1][i]]=1;for(int x;!q.empty();q.pop()){x=q.front(); p[x].push_back(N);sort(p[x].begin(),p[x].end());for(int i=0;i<26;++i)if(!son[x][i]) son[x][i]=son[f[x]][i];else q.push(son[x][i]),f[son[x][i]]=son[f[x]][i];}}inline int query(char* s,int l,int r){int ans=0;for(int x=1;*s;++s){x=son[x][vs];for(int j=x;j>1;j=f[j])if(c[j]>ans && *lower_bound(p[j].begin(),p[j].end(),l)<=r){ ans=c[j]; break; }}return ans;}
}AC;
char s[N][12],c[N];
struct edge{ int v,nt; } G[N<<1];
int h[N],d[N],f[N],top[N],son[N],sz[N];
int l[N],r[N],n,m,cnt=0,clk=0,T;
inline void adj(int x,int y){G[++cnt]=(edge){y,h[x]}; h[x]=cnt;G[++cnt]=(edge){x,h[y]}; h[y]=cnt;
}
void dfs(int x,int p){d[x]=d[p]+1; f[x]=p; sz[x]=1;for(int v,i=h[x];i;i=G[i].nt)if(!d[v=G[i].v]){dfs(v,x);sz[x]+=sz[v];if(sz[son[x]]<sz[v]) son[x]=v;}
}
void dgs(int x,int p){l[x]=++clk; top[x]=p; if(son[x]) dgs(son[x],p);for(int v,i=h[x];i;i=G[i].nt)if(!top[v=G[i].v]) dgs(v,v);
}
int gLca(int x,int y,char* s){int ans=0;for(;top[x]!=top[y];y=f[top[y]]){if(d[top[x]]>d[top[y]]) x^=y^=x^=y;ans=max(ans,AC.query(s,l[top[y]],l[y]));}if(d[x]>d[y]) x^=y^=x^=y;return max(ans,AC.query(s,l[x],l[y]));
}
int main(){scanf("%d%d",&n,&T); AC.clear();for(int i=1;i<=n;++i) scanf("%s",s[i]);for(int x,i=2;i<=n;++i) scanf("%d",&x),adj(x,i);dfs(1,0); dgs(1,1);for(int i=1;i<=n;++i) AC.insert(s[i],l[i]);scanf("%d",&m); AC.build();for(int x,y,ans=0;m--;){scanf("%d%d%s",&x,&y,c);x^=ans; y^=ans; ans=gLca(x,y,c);printf("%d\n",ans); ans*=T;}
}

转载于:https://www.cnblogs.com/Extended-Ash/p/9477162.html

Jzoj4348 打击目标相关推荐

  1. zw版_Halcon-delphi系列教程_卫星航拍精确打击目标自动识别

    <zw版·Halcon-delphi系列原创教程> 卫星航拍精确打击目标自动识别 这几天,俄罗斯空军在叙利亚大显神威,美军有意见了,说俄罗斯是狂轰滥炸,不是精确打击.       不过,战 ...

  2. Unity制作简单拦截近防炮——如何预测打击目标

    突然想尝试一下在Unity中模拟近防炮(拦截炮),该拦截跑应该发射物理子弹并并命中处在运动中的物体,所以在代码中至少应考虑: 子弹发射矢量速度vb(暂不考虑风阻) 目标距离 L 目标当前矢量速度 v ...

  3. 2015年美军将具备60分钟内打击全球目标能力(图)

    2015年美军将具备60分钟内打击全球目标能力(图) 2007-08-15 08:22:36 来源: 中国国防报 核心提示:据美<每日防务>报道,在美国会日前通过4600亿美元的2008财 ...

  4. 武器目标分配问题研究进展: 模型、算法与应用

    源自:系统公正与电子技术 作者:李梦杰  常雪凝  石建迈  陈超  黄金才  刘忠 摘 要 武器目标分配问题是指挥控制与任务规划领域的关键难点之一, 也是军事运筹领域的基础研究课题.经过多年研究, ...

  5. 【用Unity实现抛物线向目标点发射炮弹功能】

    用Unity实现抛物线向目标点发射炮弹功能 游戏开发中经常会涉及到制作向特定的目标点投掷物体的功能,比如:塔防类.射击类.即时战斗类游戏-等等,首先需要明确的一点是,要打中目标点,发射的角度.发射点与 ...

  6. 一文详解点云分割算法

    作者丨书生意封侯@知乎 来源丨https://zhuanlan.zhihu.com/p/470782623 编辑丨3D视觉工坊 从某种意义上说,地面点剔除(分割)也属于点云分割的一种,但两者技术路线有 ...

  7. 人机协同作战:或改写未来战争规则

    来源:中国军网 人工智能技术的发展,将深刻影响人机协同作战从态势感知.指挥决策.目标引导.火力打击到毁伤评估的全过程.在人工智能技术的推动下,人机协同作战极有可能成为改写未来战争规则的重要手段之一. ...

  8. 苹果「热修复门」事件复盘、分析和展望

    作者|徐川 编辑|小智 日前,有关苹果挥刀热修复的新闻引起了众多iOS开发者的热议.InfoQ 移动开发领域主编为此特意撰文,梳理事件前后经过,以及近期动向.后期可能影响,以供大家参考. 编者按 3月 ...

  9. 刚出道的黑客搞瘫美国!他们一边搞钱一边捐款给慈善组织,还说俄国人不打俄国人...

    贾浩楠 金磊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 俄罗斯黑客,刚刚搞了一个大新闻. 一伙去年8月才"出道"的黑客,劫持了一家美国公司的燃油管道运输管理系统,声称& ...

最新文章

  1. php下载提示保存,php利用header函数实现文件下载时直接提示保存_php技巧
  2. linux下shell显示-bash-4.1#不显示路径解决方法
  3. python画笑脸-python 利用turtle库绘制笑脸和哭脸的例子
  4. c++学习4 -- 输入输出
  5. CV之IR:计算机视觉之图像检索(Image Retrieval)方向的简介、使用方法、案例应用之详细攻略
  6. Gitlab的CI/CD初尝试
  7. Jmeter之BeanShell
  8. C++使用openssl实现aes加解密,其中加密是string到文件,解密是文件到string,切合项目背景
  9. anaconda镜像源配置_Anaconda使用技巧,如何修改国内镜像源?
  10. 本周计划(4月12日-19日)
  11. Oracle EBS-SQL (BOM-19):主BOM与替代BOM互换.sql
  12. js改变style中的值
  13. 现在论文用手写还是用计算机写,毕业论文计算机手写数字识别技术完整版.docx...
  14. python html转图片失真_html dom 转化成图片踩坑记(canvas toDataURL)
  15. vue+nodejs+element 实现drawio绘图效果
  16. TwinCAT3 控制器PLC之间EAP通讯2-从机发送方式1
  17. 利用matlab信号带宽,测量均值频率、功率、带宽
  18. 《走遍美国》MP3 共78集下载地址
  19. echoServer回显服务器
  20. Android dex2oat命令参数解释

热门文章

  1. 【牛客 - 551F】CSL 的神奇序列(推公式,猜结论,母函数)
  2. 【HDU - 4635】Strongly connected(缩点,新图性质,建图,Tarjan求强连通分量)
  3. 【HDU - 2066】:一个人的旅行(Dijkstra算法)
  4. android 仿真翻页动画,Android 两Activity之间动画效果(1)---------翻页效果
  5. 米莱狄的机器人是_王者荣耀2.22更新:米莱狄机器人化身超级兵,狂铁将成T1级战士...
  6. java中能构成循环的语句_《编程导论(Java)#183;3.2.4 循环语句》
  7. eclipse提示方法已过时_提高效率,eclipse上你可能不知道的技巧
  8. 乐乐勇智能教育机器人有多少型号_【头条】协作机器人平台化趋势将会是柔性自动化的破局之道...
  9. Mysql处理海量数据时的一些优化查询速度方法
  10. 《Head First设计模式》第二章笔记 观察者模式