首页 > 其他分享 >UOJ #889. 【UNR #8】二维抄袭检测

UOJ #889. 【UNR #8】二维抄袭检测

时间:2024-08-18 09:48:19浏览次数:11  
标签:UNR 匹配 暴力 第三行 889 UOJ 转移 log

题面传送门

首先你需要会 \(n=2\) 时候的贪心,这个比较简单,直接能走就走就行了。

然后 \(n=3\) 的时候就不能能走就走了,可能在中间就拐到第三行了。但是容易发现的是我们只会在最后一个能走到第三行的位置走到第三行。我们需要找到这个位置。一个比较重要的观察是,如果其后面匹配长度大于 \(3\),则是否能走到第三行是确定的,否则暴力即可。\(n=4\) 同样也是类似的。

\(n\) 更大以后的路径形态会比较复杂,不好贪心。考虑 DP,我们对于每条斜线进行 DP,记 \(f_i\) 为这条斜线在第 \(i\) 行能否匹配。

直接硬要转移是在一个 DFA 上跑匹配,需要 DAG 链剖分。但是根据我们上面的观察,记 \(f_i\) 中第一个 \(1\) 为 \(x\),则我们求出 \(x\) 往后最多能匹配到哪里,那么这一段的转移是确定的,最后一个位置不确定,但是可以暴力转移,之后 \(x\) 至少 \(+1\)。

因此对于每个询问,我们会进行 \(n\) 轮操作,每一轮操作中需要求一次 LCP 以及一次矩阵连乘积,还有一次暴力转移。压位加上猫树即可做到 \(O(L\log L+n^3m\log m+qn^2)\)。

submission

标签:UNR,匹配,暴力,第三行,889,UOJ,转移,log
From: https://www.cnblogs.com/275307894a/p/18365313

相关文章

  • UOJ #888. 【UNR #8】里外一致
    题面传送门唉,不会生成函数。考虑一种出现次数为\(x\)的数,它可以被分到其中一边,也可以两边同时分。前者会有\(1\)的系数,后者会有\(2^x-2\)的系数。用生成函数来刻画,则一种出现次数为\(c\)的数的GF为\(x+\frac{1}{x}+2^c-2\),而我们要求的就是所有出现过的数的GF乘起......
  • [题解 hduoj-7522] 2024HDU 暑假多校7 - cats 的最小生成树
    原题链接题意有一个有重边的无向图,每次找到它的最小生成树,并删除生成树的边,直到不存在最小生成树,问被每条边在第几次被删除.思路考虑用类似Kruskal算法,但是是遍历一遍所有边,同时处理出来所有的生成树.具体这样做:如Kruskal一样,把所有边按边权排序,......
  • Unraid NAS 系统U盘制作
    UnraidNAS系统U盘制作打开官方网站:https://unraid.net/zh/下载(即https://unraid.net/zh/下载)下载最新版本如下图第一种方式:根据当前系统下载对应的USB制作工具版本,如,下载windows版本USB制作工具安装后运行此工具,找最新的unraid系统版本后,插入U盘进行下载即可完成Unraid......
  • UOJ #712. 【北大集训2021】简单数据结构
    Description你有一个长度为\(n\)的序列\(a\),下面你要进行\(q\)次修改或询问。给定\(v\),将所有\(a_i\)变为\(\min(a_i,v)\)。将所有\(a_i\)变为\(a_i+i\)。给定\(l,r\),询问\(\sum_{i=l}^ra_i\)。\(1\leqn,q\leq2\times10^5,0\leqa_i,v_i\leq10^{12}......
  • UOJ354 新年的投票
    最近我博客似乎出了点bug,倒是不太会修,将就着看吧。本文主要关注第四个子任务,前面三个有叙述不清的敬请谅解。UOJ354新年的投票Sub1不管人的编号直接爆搜就能够找到一个合法方案。Sub3第\(i\)个人假设自己是第一个\(1\),\(1\simi-1\)的都不能是\(1\),如果自己确实有这......
  • [UnrealCircle]腾讯 罗谦 | UnLua-UE4下的Lua脚本插件
    传送门:[UnrealCircle]腾讯罗谦|UnLua-UE4下的Lua脚本插件_哔哩哔哩_bilibili参考PPT:UnrealCircle921北京PPT_免费高速下载|百度网盘-分享无限制一.UnLua基础1.1概念UnLua是一个脚本插件UnLua不是蓝图的替代,而是一种补充没有Asset预览不支持nativization......
  • UOJ354 新年的投票
    task3:intn=15;intval[1<<16];inte[1<<16][16];signedmain(){ freopen("vote3.ans","w",stdout); intV=1e8; For(i,0,n-1)e[1<<i][i]=V,e[0][i]=-V,val[1<<i]=V; For(j,1,n-1){ For(s,0,(1<<n)-1) i......
  • 一个 API,用于读取带有特定描述的未读邮件,但在读取时删除标签 UNREAD
    我有一个Python脚本,它与GmailAPI交互,并搜索来自特定电子邮件地址、具有特定描述的未读邮件。但我想要它,所以当它读取邮件时,它会删除UNREAD标签,这样当我再次运行脚本时它就不会检测到它。from__future__importprint_functionimportpickleimportos.pathfromgoo......
  • 「杂题乱刷2」CF1889A Qingshan Loves Strings 2
    vp到的。题目链接CF1889AQingshanLovesStrings2解题思路我们考虑从头到尾依次判断情况。维护两个指针\(l,r\)来依次比较,直到有\(a_l=a_r\)。这种情况根据题目所述是不合法的,因此我们需要依次分讨一下两种情况:\(a_l=a_r=1\),这时我们只需要在\(s_l\)前加上......
  • UNRAID-虚拟机:扩容
    目录背景UNRAID下界面操作基于命令的扩容方式(qcow2)其他说明背景UNRAID建立的虚拟机前期分配的容量太小,后期有办法扩容吗?UNRAID是基于KVM+QEMU的,如果使用qcow2创建的虚拟机是可以进行扩容的。(raw默认是不可以动态扩展的,但是可以使用dd或者truncate来完成或转为qcow......