「Luogu P1210」回文检测 解题报告】的更多相关文章

题面 这是一道诡异的黄题 居然让你求一串吧啦吧啦的东西中 字母(大小写)最长的回文串的长度,还要输出完整的串 吐血 思路: 保持淡定,我们啥都不会,就会Manacher,那就用Manacher大法! 1.把字符串处理成只有字母(去皮) 2.把字符串中插入#号(掺假) 3.Manacher跑一跑最长回文串长度(市场检查) 4.求出最长长度后再重新代入原来的字符串(打回原形!妖孽!) 然后,就完了~ 就是去皮的时候,顺便记录一下字符的位置,这样重新代入时就比较方便 并且由于字符串有很多行,读入时就要…
题面 求环中的长度为k(k为奇数)且回文中心不同的回文串个数 思路: 刚学manacher算法,就送上一道模板题,此题注重对manacher算法的理解 Manacher,但是不用插入其他符号,因为k是奇数,中心一定在字符上 不知道Manacher? 洛谷日报上有讲,但是比较难懂,建议上B站更深入了解下\(\to\) 可以先把代码抄下来,然后一边看讲解一边理解代码含义,这样更能理解 反正我第一遍已经看蒙了 补充和纠正: 关于前几篇题解,一些小细节纠正一下 文末的代码更加简洁易懂 1.这是一个环,要…
题面 主要大衣大意: 给定一个字符串,求至少加入多少个字符才能使字符串变成回文字符串 下面就是我一本正经的胡说八道题解 思路: 很显然,这应该是一道典型的最长公共子序列的题目 因此,主要思想就是DP 方程式也挺好推的 于是我们就来讲一下为什么这题能用最长公共子序列(LCS)求解 证明: 求的是什么? 想要使这个字符串加入最少的字符变成一个回文串,那么肯定就是要是字符串中不能回文的部分回文 说起来比较难理解,比如:Ab3bd最少添的字符就是A对应的一个A,最后d对应的一个d 我们可以发现,最少要添…
题面 好难表述啊~ 在n*m的矩阵上,有一些大兵(为0),一些空地(一个正整数),障碍物(-1),现在摧毁一些空地,使所有大兵不能走出矩阵去(代价为表示空地的整数),求最小代价 思路: 网络流最小割 "阻止","最小",看到这样的字眼,肯定就要想到最小割啊 在互相能到达的点之间建边,容量为INF,因为--它不能炸-- 然后把每个点拆成入点和出点,每个兵所在的出点和源点S直接相连,在最外面的点的出点和汇点T直接相连 最后套模板,OK了 最重要的还是建边,能够理解题目的…
题面 一个二叉树,边数为n\((2<n\le 100)\),每条边有一个权值,求剪枝后剩下p\((1<p<n)\)条边,使p条边的权值和最大 还看不懂?-- 2 5 input:5 2 output:21 \ / 1 3 1 3 4 1 4 10 \ / 2 3 20 1 3 5 20 能理解了吧! 思路: 树形打屁DP 很基础的一道树形DP 对于每个点,用f[k][i]记录在以k为根的子树中,取i条枝的最大值 注意: 1.要注意叶子节点的判断 2.有可能只取一侧的子树 Code: #i…
[九度OJ]题目1192:回文字符串 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1192 题目描述: 给出一个长度不超过1000的字符串,判断它是不是回文(顺读,逆读均相同)的. 输入: 输入包括一行字符串,其长度不超过1000. 输出: 可能有多组测试数据,对于每组数据,如果是回文字符串则输出"Yes!",否则输出"No!". 样例输入: hellolleh helloworld 样例输出: Y…
题目描述--->P1210 回文检测 分析: 看到回文显然想到了manacher算法(线性求解回文串问题 如果不了解还是去敲一下板子,学习一下比较好.-->manacher 题目要求我们求出只包含字母的回文串的长度. 如果你会manacher,这很简单. 只需要在输入之后处理一下我们得到的串即可. 这题的难点在于,如何输出原串 吐槽 本来以为求出我们的最长回文半径的最中间的位置的字符,判断其左右两侧遇到的第一个字符是否相等,如果相等我们就可以一直扩展过去,直至无法匹配. 感觉这种被卡的概率还是…
\(\mathcal{Description}\)   Link.   给定字符串 \(s\),处理 \(q\) 次操作: 在 \(s\) 前添加字符串: 在 \(s\) 后添加字符串: 求 \(s\) 的所有非空回文子串数目.   任意时刻 \(|s|\le4\times10^5\),\(q\le10^5\). \(\mathcal{Solution}\)   双向 PAM 模板题.   思考一个正常的 PAM 所维护的--一个 DFA,每个结点的连边代表左右各加同一个字符:还有一个 fail…
给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文串.找到并返回可以用这种方式转换的最短回文串. 示例 1: 输入: "aacecaaa" 输出: "aaacecaaa" 示例 2: 输入: "abcd" 输出: "dcbabcd" 解题思路一 直觉告诉我们,我们找出左边的最长回文子串,比如aacecaaa左侧最长的回文子串就是aacecaa,然后将右侧剩余的部分反转补到原串的左侧即可.由于找的是最长的回文子串,…
P4555 [国家集训队]最长双回文串 题目描述 顺序和逆序读起来完全一样的串叫做回文串.比如acbca是回文串,而abc不是(abc的顺序为abc,逆序为cba,不相同). 输入长度为\(n\)的串\(S\),求\(S\)的最长双回文子串\(T\),即可将\(T\)分为两部分\(X\),\(Y\),(\(|X|,|Y|≥1\))且\(X\)和\(Y\)都是回文串. 输入输出格式 输入格式: 一行由小写英文字母组成的字符串\(S\). 输出格式: 一行一个整数,表示最长双回文子串的长度. 说明…
「CTS2019 | CTSC2019」氪金手游 降 智 好 题 ... 考场上签到失败了,没想容斥就只打了20分暴力... 考虑一个事情,你抽中一个度为0的点,相当于把这个点删掉了(当然你也只能抽中度为0的点) 删掉就是字面意思,就是剩下的树变成子问题 考虑为什么,在抽中这个\(i\)号点后,抽中其他点的概率为 \[ \frac{W-w_i}{W}\sum_{i=0}^{\infty}(\frac{w_i}{W})^i=1 \] 说明这个点已经白给了 然后考虑这个树如果是一颗外向树,就是每个点…
CF546B Soldier and Badges 题意翻译 给 n 个数,每次操作可以将一个数 +1,要使这 n 个数都不相同, 求最少要加多少? \(1 \le n \le 3000\) 感谢@凉凉 提供的翻译 题目描述 Colonel has \(n\) badges. He wants to give one badge to every of his \(n\) soldiers. Each badge has a coolness factor, which shows how mu…
下面代码内容是关于C#进行回文检测,判断字符串是否是回文的代码,应该是对各位朋友有些好处. Console.WriteLine("算法1:请输入一个字符串!");string str1 = Console.ReadLine();for (int i = str1.Length - 1; i >= 0; i--){} Console.WriteLine("是回文");elseConsole.WriteLine("不是回文");…
package bao; import java.util.Scanner; public class Work { public static boolean digui(String str1,int i,int j) { if(j==1||j==0) { return true; } else { if(str1.charAt(i)==str1.charAt(j)) { return digui(str1,++i,--j); } else { return false; } } }//en…
题目大意: 求字符集大小为$k$长度为$n$的经循环移位后为回文串的数量. 题解: 这题是D1里最神的吧 考虑一个长度为$n$回文串,将其循环移位后所有的串都是满足要求的串. 但是显然这样计算会算重.考虑什么情况下会算重. 即当我们将这个回文串移位$x$后,发现这个新字符串为一个回文串时,必然接下来的移位都是重复的. 那么当$x$为多少时,新字符串为一个回文串? 我们稍加分析就会发现x一定和回文串的最小循环节$d$有关. 考虑最小循环节若为偶数时,当$x==d/2$时,则会变为一个新的回文串.…
题目描述 据说如果你给无限只母牛和无限台巨型便携式电脑(有非常大的键盘),那么母牛们会制造出世上最棒的回文.你的工作就是去寻找这些牛制造的奇观(最棒的回文). 在寻找回文时不用理睬那些标点符号.空格(但应该保留下来以便做为答案输出),只用考虑字母’A’-‘Z’和’a’-‘z’.要你寻找的最长的回文的文章是一个不超过20,000个字符的字符串.我们将保证最长的回文不会超过2,000个字符(在除去标点符号.空格之前). 输入输出格式 输入格式: 输入文件不会超过20,000字符.这个文件可能一行或多…
Manacher 正确读法:抹内A撤(马拉车) (跟着假硕学英语) 我们把原来的字符串,通过玄学处理,变成只留下字母,且每两个字母之间有一个奇怪的字符的那种Manacher专用字符串. 建立双射关系f[i]表示a[i]在b中的位置(如果a[i]是字母),f_[i]表示b[i]在a中的位置(如果b[i]是字母) 然后对b数组跑Manacher 然后找最长回文子串回文中心的位置,通过这个位置直接在b数组中先找左右端点,然后在找到a数组中对应位置输出 数组要开到四万(下面的代码开了两万RE一个点,想抄…
数列编辑器,在线IDE 本期的主题是洛谷的在线IDE 小学生?!小学生虐我…
题面 思路: 作为一个后缀数组的初学者,当然首先想到的是后缀数组 把\(s\)这个串首尾相接,扩展为原来的两倍,就能按后缀数组的方法处理 证明: 神仙一眼就看出这是后缀的裸题,我这个蒟蒻想了半天想不出来 如果我们只对\(s\)串进行后缀排序,明显无法处理如下的情况,于是就拿了30分 \(s=bnabn\) \(bn\)会在\(bnabn\)前面,而实际\(bn\)对应的应该是\(bnbna\),比\(bnabn\)要大 那么应该这么处理这些缺少的串呢? 我们可以尝试一下把原来的\(s\)变成两倍…
题面 给定圆的半径,求圆上整点数 这是一道很Nice的数学题!超爱!好吧,由于这道题,我去Study了一下复数(complex number)复杂的数 真棒!!! 有兴趣的戳这里!!!\(\huge \to\) 思路: 高斯素数的原理,将整数分解质因数后,再把每个质因数分解成高斯素数,对于质数4n+1,它可以有效的分解成高斯素数,而质数4n+3不能,因为3无法分解为高斯素数,所以当一个数有奇数个3因子时,这个圆上没有整点,而3的个数为偶数时,由于能分成两组配对,所以有整点,但3对Ans的影响为0…
题面 一道模拟题,模拟CPU的处理过程?!省选模拟题 思路: 模拟退火大法+优先队列乱搞 要注意的点 1.空闲时,CPU要处理进程 2.当队列中没有进程时,要先进行判断,然后访问 3.当优先级高的进程替换掉原进程时,原进程已经处理过的时间要减去 4.结束进程时要更新后面进程的时间 既然是模拟题,那就不讲具体了h^ovny:我懒 Code: #include<bits/stdc++.h> using namespace std; struct node{ int i,S,l,p; node(in…
圆原题面 我环顾四周,发现大佬们的写法都好高端! 比较差劲的我,只能交上一份DFS的题解 思路: DFS(当然了,其他算法也行) 要想切断叶子节点到根节点的连接 就是在叶子节点和根节点之间砍掉一条边 这明显就很符合DFS的性质,一条路一直走下去,遇到分枝就分开走 于是我们DFS每一条路径,然后求答案 复杂度为O(n) 但是--还没完! 我们可以发现DFS有三种情况 1.该节点为叶子节点,此时只能删去连接它和父节点的边 2.该节点为枝节点,有父节点和子节点,需要选择性的删除 3.该节点为根节点,只…
身为一个蒟蒻,由于刷不过[NOI2001]食物链 于是出门左转写了道另一道假的食物链 戳这里 这里的食物链个条数其实就是有向图的路径数(应该是这么说吧,我弱) 思路: 拓扑(Topulogy)(一本正经的话说八道)+宽搜+乱搞+(由于本人很弱,所以想不出来了)-- 不用先求拓扑序 一边遍历一边用 f数组 统计路径数 存个图,然后队列遍历,要注意的是单独的一个点不算一条链 所以就第一遍把单独的点处理出去(不进队列) 最后的问题就是累加了 如果这个点出度为0时,就 ans+= f[to] 否则更新f…
点开有惊喜 其实是题面 这D1T1给的很有面子! 我居然做的来! 从左上角走到右上角 然后n<=1000 所以果断放弃DFS,选择BFS 思路还是一样的BFS 证明: 走到一个点的时间越早越好(因为时间越晚能走到的点越少,路障多了) 所以用BFS,走过的点不用再次走,用 vis数组记录已经是否遍历过 然后为了防止跑出棋盘去(B君看到了棋盘外美铝?!) 我们就给棋盘加一个 '1'的边框,这样就不会出去 然后还要记录一个时间t.x.y,可以用一个结构体 构造用 struct node{ ​ int…
题目大意 有 $\text{N1}$ 本书 $\text{N2}$本练习册 $\text{N3}$本答案,一本书只能和一本练习册和一本答案配对.给你一些书和练习册,书和答案的可能的配对关系.问你最多可以配成多少套完整的书册. 解题思路 我已开始直接建立超级源点汇点,然后源点$\rightarrow $练习册连边,练习册$\rightarrow $书连边,书$\rightarrow $答案连边,答案$\rightarrow $汇点连边.然后直接跑 $\text{Dinic}$.$\text{RE}…
P4714 「数学」约数个数和 题意(假):每个数向自己的约数连边,给出\(n,k(\le 10^{18})\),询问\(n\)的约数形成的图中以\(n\)为起点长为\(k\)的链有多少条(注意每个点都有自环) 这样想是做不出来题的. 正常的题意是:询问\(n\)的约数的约数的....(共\(k\)次复读后)约数个数和. 考虑\(f_k(n)\)表示答案. 显然有\(f_{k}(n)=\sum_{d|n}f_{k-1}(d)\) 注意到用数论卷积的形式可以表示为 \[ \mathtt f_k=\…
「NOI2013」树的计数 这什么神题 考虑对bfs重新编号为1,2,3...n,然后重新搞一下dfs序 设dfs序为\(dfn_i\),dfs序第\(i\)位对应的节点为\(pos_i\) 一个暴力是枚举bfs的分层,然后检查合法性. 但是我们注意到一个事情,节点\(i\)与节点\(i-1\)是否在同一层,是不是具有独立性呢? 设\(s_i\)表示\(i\)与\(i+1\)是否在同一层,当\(s_i=1\)时,表示不在同一层. 那么 \(s_1=1\),显然 若区间\([l,r]\)是同层的,…
「NOI2016」优秀的拆分 这不是个SAM题,只是个LCP题目 95分的Hash很简单,枚举每个点为开头和末尾的AA串个数,然后乘一下之类的. 考虑怎么快速求"每个点为开头和末尾的AA串个数" 考虑枚举A的长度,然后在序列中每|A|个位置放一个关键点,这样每个AA至少都经过了一个关键点. 然后求相邻两个关键点的lcs,lcp,画画图匹配一下,可以把区间内的都求出来了. 可以Hash二分或者sa或者sam Code: #include <cstdio> #include &…
「NOI2016」循环之美 对于小数\(\frac{a}{b}\),如果它在\(k\)进制下被统计,需要满足要求并且不重复. 不重复我们确保这个分数是最简分数即\((a,b)=1\) 满足要求需要满足第一位的余数在后面仍然出现,第一位余数是\(a\bmod b\),后面第\(x\)位的余数实际上是\(a\times k^x\bmod b\) 所以我们需要满足 \[ a\equiv a \times k^x\pmod b \] 有解 因为\((a,b)=1\),所以 \[ k^x\equiv 1\…
「FJOI2018」领导集团问题 题意:给你一颗\(n\)个点的带点权有根树,选择一个点集\(S\),使得点集中所有祖先的点权$\le \(子孙的点权,最大化\)|S|$(出题人语死早...) 一个显然的\(dp\) \(dp_{i,j}\)代表子树\(i\)中选择的点集中最小的点权为\(j\)时的最大值. 一个朴素的转移需要维护一个后缀最大值 设为\(f_{i,j}=\max\limits_{k\ge i} dp_{i,k}\) 一些显然的事实 后缀最大值中仅有最多\(siz_v\)(指子树大…