2806: [Ctsc2012]Cheat Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 1262  Solved: 643 Description Input 第一行两个整数N,M表示待检查的作文数量,和小强的标准作文库的行数接下来M行的01串,表示标准作文库接下来N行的01串,表示N篇作文 Output N行,每行一个整数,表示这篇作文的Lo 值. Sample Input 1 2 10110 000001110 1011001100 Sam…
题目链接 首先二分答案L.然后就是判断能否将原串划分出一些长度不小于L的子串,这些子串要是给定n个串中的某个串的子串,且满足它们的长度之和不小于原串长度的90%. 贪心多长选一段什么的显然不对.老老实实DP. 设\(f[i]\)为到\(i\)划分出的最长长度(不用想什么奇奇怪怪的状态啊→_→),则\(f[i]=\max\{f[i-1],\ f[j]+i-j\}\) (\(s[i\sim j]\)是\(n\)个串中某串的子串,且\(i-j\geq L\)). 求以某位置结尾的子串是否匹配,可以对\…
把模板串建一个广义SAM 然后在线查询,每次在SAM上预处理出一个a[i]表示i位置向前最多能匹配多长的模板串 二分答案L,dp判断,设f[i]为·~i有几个匹配,转移显然是f[i]=max{f[i-1],f[j]+i-j(i-a[i]<=j<=i-L)},根据性质,i-a[i]是单调的(或者直接看a[i]的预处理过程也能看出来),所以这个dp可以用单调队列优化转移,最后判断是否f[n]>=L*0.9 #include<iostream> #include<cstdio…
Description Input 第一行两个整数N,M表示待检查的作文数量,和小强的标准作文库的行数 接下来M行的01串,表示标准作文库 接下来N行的01串,表示N篇作文 Output N行,每行一个整数,表示这篇作文的L0值. Sample Input 1 2 10110 000001110 1011001100 Sample Output 4 HINT 输入文件不超过1100000字节 注意:题目有改动,可识别的长度不小于90%即可,而不是大于90% Solution 首先把广义$SAM$…
2806: [Ctsc2012]Cheat 题意: 多个主串和多个询问串,每次询问将询问串分成多个连续子串,如果一个子串长度>=L且在主串中出现过就是熟悉的 如果熟悉的字符串长度>=询问串长的90%就是熟悉的文章:求成为熟悉的文章的最大的L 主串建广义SAM然后二分L判断可行性 使用DP判断L是否可行,一定要注意是长度不是数量,煞笔Candy?就看错题了 len[i]表示i位置之前最大公共长度,和spoj LCS一样... f[i]表示前i个字符最长熟悉长度,f[i]=max{f[i-1],f…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2806 只想着怎么用后缀数据结构做,其实应该考虑结合其他算法. 可以二分那个长度 L .设当前二分为 mid :令 dp[ i ] 表示到 i 位置“熟悉”的最大长度.那么 \( dp[i]=\max(dp[i-1],\max\limits_{j<=i-mid,s[j+1...i] \in S}(dp[j]+(i-j)) ) \) (其中 S 是模式串的所有子串集合). 关于那个判断,只要先…
题目大意: 给你一堆模式串和文本串 对于每个文本串,我们可以把它不可重叠地拆分成很多子串,如果拆分出的串作为子串出现在了任何一个模式串中,我们称它是“眼熟的”,我们必须保证“眼熟的”子串总长度不小于文本串的90%,现在定义一个数$L$,表示拆分出的子串的最小长度,求每个文本串的$L$的最大值 神题 考虑$L$的性质,发现$L$越大,“眼熟的子串”总长度越长 可以这样简单证明,长度越小的串,对于匹配越有利,因为如果一个大串出现在了模式串中,那么它的所有子串一定出现在了模式串中,反之,小串出现在模式…
偷懒直接把bzoj的网页内容ctrlcv过来了 2806: [Ctsc2012]Cheat Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 1943  Solved: 1004[Submit][Status][Discuss] Description Input 第一行两个整数N,M表示待检查的作文数量,和小强的标准作文库的行数接下来M行的01串,表示标准作文库接下来N行的01串,表示N篇作文 Output N行,每行一个整数,表示这篇作文的Lo…
2806: [Ctsc2012]Cheat Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 583  Solved: 330[Submit][Status][Discuss] Description Input 第一行两个整数N,M表示待检查的作文数量,和小强的标准作文库 的行数 接下来M行的01串,表示标准作文库 接下来N行的01串,表示N篇作文 Output N行,每行一个整数,表示这篇作文的Lo 值. Sample Input 1 2 101…
先建出广义后缀自动机. 然后跑出文章中每一个位置的最大匹配距离. 然后定义$f[i]$表示匹配到以$i$结尾的串时,最长的匹配距离. 显然可以二分$L$的取值. 然后容易得到$DP$方程 $f[i]=max(f[i-1],f[j]+i-j)(j<=i-L)$ 然后就发现$j$属于一个区间,然后就可以单调队列优化了. #include <map> #include <ctime> #include <cmath> #include <queue> #in…
传送门 好久没刷bzoj惹…… 题意不说可以嘛. 首先二分答案. SAM的事情搞完以后就是dp辣. 我们已经对于每个位置i,找到了最小的一个k,使得[k,i]这个子串在模版串中出现过.那么我们需要做的是把f[i]给min上f[k]到f[i-x],直接搞是$n^2logn$的,套个数据结构也是两个log的.然而如果一个位置j不在合法的区间中,那么以后也不会进入,那么直接用一个单调队列维护就好了. #include<cstdio> #include<cstring> #include&…
BZOJ 洛谷 \(shadowice\)已经把他的思路说的很清楚了,可以先看一下会更好理解? 这篇主要是对\(Claris\)题解的简单说明.与\(shadowice\)的做法还是有差异的(比如并没有明显用到后序遍历的性质),而且用这种写法可能跑的比较轻松? (另外你只要想明白\(f,h\)是代表啥,就很好理解了...) 问题等价于树形依赖背包,允许一条链每个点各免费取一次. 免费取一条链即\(t\leq h+k\)的限制.这样最优解一定会免费取了一条从叶子到根节点的链. 现在考虑一下怎么做.…
1004 抄作业         Time Limit: 1sec    Memory Limit:256MB Description Zfree虽然平时很爱学习,但是他迫于生活所迫(比如设计cpu实验啊),这周数分作业只能抄答案了. 可是这是他第一次抄作业题目又多,于是他有些不想抄,因为他想玩会游戏再抄,于是他打算用一定的时间去抄作业(当然也可以不用完). 而这可能抄不完,所以他会选择跳过几题不抄,为了尽量不被老师发现,他想知道他抄写的两题的题号最大间隔最小是多少?(间隔包括他第一个抄的题目前…
题面 传送门 分析 显然答案有单调性,可以二分答案,设当前二分值为g,根据题意我们可以求出跳跃长度的范围[l,r] 考虑DP 子状态: dp[i]表示跳到第i个点时的最大和 状态转移方程 \(dp[i]=max(dp[i],dp[j]+a[i]) (j \in [1,n),x[i]-x[j] \in [l,r])\) 初始值:dp[0]=0 (把起点看成第0号点,权值和坐标都为0) 直接转移的时间复杂度是\(O(n^2)\) 由于此题数据水,\(O(n^2logn)\)可以卡过 (相信热爱学习,…
传送门 解题思路 肯定先要建出来广义后缀自动机.刚开始以为是个二分+贪心,写了一下结果\(20\)分.说一下正解,首先显然\(L_0\)具有单调性,是可以二分的.考虑二分后怎样判合法,对于分割序列很容易想到\(dp\),设\(f_i\)表示前\(i\)个字符匹配成功数量,那么有转移方程\(f_i=max(f_j+i-j)(i-j>=L\) 且 \(j\)到\(i\)可以匹配 \()\),\(L\)是二分出来的限制,判断是否能匹配可以预处理,预处理出\(mth_i\)表示\(i\)最多能与往前\(…
[NOIP2017普及组]跳房子 题目描述 跳房子,也叫跳飞机,是一种世界性的儿童游戏,也是中国民间传统的体育游戏之一. 跳房子的游戏规则如下: 在地面上确定一个起点,然后在起点右侧画 nn 个格子,这些格子都在同一条直线上.每个格子内有一个数字(整数),表示到达这个 格子能得到的分数.玩家第一次从起点开始向右跳,跳到起点右侧的一个格子内.第二次再从当前位置继续向右跳,依此类推.规则规定: 玩家每次都必须跳到当前位置右侧的一个格子内.玩家可以在任意时刻结束游戏,获得的分数为曾经到达过的格子中的数…
考试的时候打了个树链剖分,而且还审错题了,以为是每天找所有点的最长路,原来是每天起点的树上最长路径再搞事情.. 先用dfs处理出来每个节点以他为根的子树的最长链和次长链.(后面会用到) 然后用类似dp的方法把每个节点的最长路径求出来. 下面是具体解释,请思考 以一个节点为例(w为它与父亲节点道路的权值) 一.如果它父亲节点的最长路径不过它 那么它最长路径等于它父亲最长路径+w(自己画图即可理解,往上走的) 它的次长路径等于它的最长链(只能往下走) 二.如果过它 那么它的最长路径有两种可能 ①它的…
DP + 单调队列优化 + 平衡树 好题 Description Given an integer sequence { an } of length N, you are to cut the sequence into several parts every one of which is a consecutive subsequence of the original sequence. Every part must satisfy that the sum of the intege…
codevs 1748 瑰丽华尔兹 2005年NOI全国竞赛  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 大师 Master 题解       题目描述 Description 你跳过华尔兹吗?当音乐响起,当你随着旋律滑动舞步,是不是有一种漫步 仙境的惬意? 众所周知,跳华尔兹时,最重要的是有好的音乐.但是很少有几个人知道, 世界上最伟大的钢琴家一生都漂泊在大海上,他的名字叫丹尼·布德曼·T.D.·柠 檬·1900,朋友们都叫他 1900. 1900 在 20 世纪的…
BZOJ_3316_JC loves Mkk_ 二分答案 + 单调队列 题意: 分析: 拆成链,二分答案,奇偶两个单调队列维护最大子段和,记录方案. 代码: #include <cstdio> #include <cstdlib> #include <cstring> #include <iostream> #include <algorithm> using namespace std; #define N 200050 #define LL…
烽火传递[题目描述]烽火台又称烽燧,是重要的防御设施,一般建在险要处或交通要道上.一旦有敌情发生,白天燃烧柴草,通过浓烟表达信息:夜晚燃烧干柴,以火光传递军情.在某两座城市之间有n个烽火台,每个烽火台发出信号都有一定的代价.为了使情报准确的传递,在m个烽火台中至少要有一个发出信号.现输入n.m和每个烽火台发出的信号的代价,请计算总共最少需要花费多少代价,才能使敌军来袭之时,情报能在这两座城市之间准确的传递!!![输入描述]第一行有两个数n,m(1<=n,m<=1000000)分别表示n个烽火台…
Description 小T与小L终于决定走在一起,他们不想浪费在一起的每一分每一秒,所以他们决定每天早上一同晨练来享受在一起的时光. 他们画出了晨练路线的草图,眼尖的小T发现可以用树来描绘这个草图. 他们不愿枯燥的每天从同一个地方开始他们的锻炼,所以他们准备给起点标号后顺序地从每个起点开始(第一天从起点一开始,第二天从起点二开始……). 而且他们给每条道路定上一个幸福的值.很显然他们每次出发都想走幸福值和最长的路线(即从起点到树上的某一点路径中最长的一条). 他们不愿再经历之前的大起大落,所以…
3622 假期 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 黄金 Gold 题目描述 Description 经过几个月辛勤的工作,FJ决定让奶牛放假.假期可以在1-N天内任意选择一段(需要连续),每一天都有一个享受指数W.但是奶牛的要求非常苛刻,假期不能短于P天,否则奶牛不能得到足够的休息:假期也不能超过Q天,否则奶牛会玩的腻烦.FJ想知道奶牛们能获得的最大享受指数. 输入描述 Input Description 第一行:N,P,Q. 第二行:N个数字,中间用一个空格隔开.…
感染(low) Description n户人家住在一条直线上,从左往右依次编号为1,2,-,n.起初,有m户人家感染了COVID-19,而接下来的每天感染的人家都会感染他家左右两家的人,问t天后总共有多少人家会感染. Input 第一行输入三个整数n(1 <= n <= 2e5),m(0 <= m <= n),t(1<= t <= 2e5). 第二行m个整数ai(1 <= ai <= n),代表最初感染的m户人家的编号. Output 输出一个整数,代表最…
题目链接: (bzoj) https://www.lydsy.com/JudgeOnline/problem.php?id=2806 (luogu) https://www.luogu.org/problemnew/show/P4022 题解:对"作文库"中的串建广义SAM.(感觉加个#拼在一起直接SAM也行啊,只是常数大了点,但是大家都写的广义SAM我也就跟着写广义SAM了233333) 询问时二分\(L\), 变成求最少几个位置不匹配.然后DP方程是\(dp[i]=\min(dp[…
[BZOJ2806][Ctsc2012]Cheat Description Input 第一行两个整数N,M表示待检查的作文数量,和小强的标准作文库的行数接下来M行的01串,表示标准作文库接下来N行的01串,表示N篇作文 Output N行,每行一个整数,表示这篇作文的Lo 值. Sample Input 1 2 10110 000001110 1011001100 Sample Output 4 HINT 输入文件不超过1100000字节 注意:题目有改动,可识别的长度不小于90%即可,而不是…
我们对作文库建出广义后缀自动机.考虑用\(SAM\)处理出来一个数组\(mx[i]\),表示从作文的第\(i\)个位置向左最远在作文库中出现的子串的长度.这个东西可以在\(SAM\)上跑\(trans\)边来实现(其实求出来的是作文前i位在作文库中出现的最长后缀). 处理出来这个东西,我们考虑用\(DP\)求答案.发现直接用\(DP\)求并不是很好求,所以要在外面套一个二分答案.\(DP\)还要用单调队列优化. #include<iostream> #include<cstring>…
Description Input 第一行两个整数N,M表示待检查的作文数量,和小强的标准作文库的行数接下来M行的01串,表示标准作文库接下来N行的01串,表示N篇作文 Output N行,每行一个整数,表示这篇作文的Lo 值. Sample Input 1 2 10110 000001110 1011001100 Sample Output 4 解题思路: L0值具有单调性. L0值为0时,一定有匹配,为1时只需要考虑字符集,为2时要考虑前后顺序,所以具有单调性,L0越小匹配长度越大,那么可以…
正题 题目链接:https://www.luogu.com.cn/problem/P4022 题目大意 给出\(m\)个模板串. 然后\(n\)次询问给出一个串\(S\)要求找到一个最大的\(L\)使得能够将\(S\)超过\(90\%\)的部分拿出来分后每个串都是某个模板串的子串且长度不小于\(L\). 所有输入文件长度不超过 \(1100000\) 字节.字符集为\(\{0,1\}\) 解题思路 先把模板串拿出来构一个广义SAM,然后考虑用这个对串进行匹配. 先对于每个位置求出一个\(len_…
1233: [Usaco2009Open]干草堆tower Description 奶牛们讨厌黑暗. 为了调整牛棚顶的电灯的亮度,Bessie必须建一座干草堆使得她能够爬上去够到灯泡 .一共有N大包的干草(1<=N<=100000)(从1到N编号)依靠传送带连续的传输进牛棚来.第i包干草有一个 宽度W_i(1<=w_i<=10000).所有的干草包的厚度和高度都为1. Bessie必须利用所有N包干草来建立起干草堆,并且按照他们进牛棚的顺序摆放.她可以相放多少包就放 多少包来建立起…