• 「考试」省选12


    状态不好考的不行(x
    还是在家里不够专注吧(?

    T1
    一个简单的离散化+bfs
    细节不少
    一个区间直接把两个端点都离散进去就行了。
    统计答案的时候按块统计答案。

    T2
    减枝的搜索。
    不是特别难。
    发现其实格子并不是很多。
    (K)给限制住了。
    太多的都是0.
    那么(n+m-1)的大小必然是小于等于10的。
    直接爆搜。
    剪枝要用到一个小技巧。
    当前如果许多个颜色并没有放过,那么我放上一种颜色搜索一下得到答案,那么这几个颜色是等价的可以直接不重复搜索,然后将答案乘上个数。

    T3
    挺厉害的(SAM)实在调不出来了不过。
    可以先假设当前给出的树是(Trie)
    我对这个Trie建出exsam。
    然后对于每一个前缀节点做出如下操作:
    找到他对应的Trie节点x
    设其子树区间为:([L[x],R[x]])也就是(dfs)序。
    然后对这个前缀节点的线段树做如下操作:

    [++d[L[x]],--d[R[x]+1] ]

    然后在后缀树上线段树合并。
    这样相当于做了个树上差分。
    相当于这个节点的每个子孙节点都+1了。
    对应节点来说,就是每个祖先都在他身上累加了。
    然后对于一个匹配串。
    我可以找到在Trie上两个点之间的路径。
    首先求出lca,然后lca附近的部分均用hash处理。
    剩下的就是一个点到根的路径上匹配串出现的次数。
    这个东西直接在exsam上正反匹配匹配串,最终得到的节点设为x,当前查询的节点为(t),那么在x的线段树上查询(dfn[t])处的前缀和即可得到这个点到根路径上匹配串出现的次数。
    然后就没了,然后我写死了200多行调了好几个小时各种对拍都拍不出来我就不想写了。

  • 相关阅读:
    Lua build and install
    tomcat 配置的另外一种方法
    debian vsftp
    git(1)
    jd-gui安装
    debian crash log查看
    ros学习笔记
    51nod 1138 连续整数的和(数学公式)
    51nod 1428 活动安排问题(优先队列)
    Codeforces Round #347 (Div. 2) (练习)
  • 原文地址:https://www.cnblogs.com/Lrefrain/p/12241019.html
Copyright © 2020-2023  润新知