P8368 [LNOI2022] 串 题解】的更多相关文章

题意显然是求n位二进制串中不大于其逆序串,取反串,逆序取反串的所有串按字典序排序后的第k个 由于n很小,k很大所以我们可以考虑逐位确定 问题转化为了求方案数,这显然是可以用数位DP做的 设f[len][rev][inv]表示当前前缀长度为len,rev表示是否等于其逆序串,inv表示是否等于其逆序取反串 枚举当前点的选择可能性和对称点的选择可能性并判断合法性转移即可 至于为什么不用考虑去取反串的限制呢? 因为显然我们的首位是0,然后取反串的限制就没了QAQ 注意当n是奇数,在中间的时候当前点和对…
https://www.lydsy.com/JudgeOnline/problem.php?id=4755 JYY有两个长度均为N的字符串A和B. 一个“扭动字符串S(i,j,k)由A中的第i个字符到第j个字符组成的子串 与B中的第j个字符到第k个字符组成的子串拼接而成. 比如,若A=’XYZ’,B=’UVW’,则扭动字符串S(1,2,3)=’XYVW’. JYY定义一个“扭动的回文串”为如下情况中的一个: 1.A中的一个回文串: 2.B中的一个回文串: 3.或者某一个回文的扭动字符串S(i,j…
http://www.lydsy.com/JudgeOnline/problem.php?id=2565 题目大意: 顺序和逆序读起来完全一样的串叫做回文串.比如acbca是回文串,而abc不是(abc的顺序为“abc”,逆序为“cba”,不相同). 输入长度为n的串S,求S的最长双回文子串T,即可将T分为两部分X,Y,(|X|,|Y|≥1)且X和Y都是回文串.   ——————————————————————看到回文串长度最大,先敲一个manacher算法. 然后思考如何更新每一个字符以其为起…
问题简述 给定\(n\)个盒子,每个盒子的容器为\(b[i]\),里面装有\(a[i]\)个物品.今有\(q\)组询问,每组询问给出一个正整数\(k(k<=n)\),已知一个盒子里的一件物品转移到另一个盒子需要一单位时间,要求将所有物品转移到任意\(k\)个箱子中最少需要多少时间. 数据范围 对于前60%的数据,\(n<=20\). \(q<=100\) 对于前100%的数据,\(n<=80\). \(q<=200\). \(a[i]<=b[i]<=20\) 看到…
目录 题目链接 题解 代码 题目链接 bzoj4503: 两个串 题解 暴一发bitset f[i][j] 表示 S[1..i] 是否有个后缀能匹配 T[1..j] 那么假设 S[i+1] 能匹配 T[s],令 f[i+1][s] | = f[i][s-1] 所以预处理理出每个字符能匹配 T的哪些位置,设为[c] 那么 f[i]=((f[i-1]<<1)|(1<<1)) & mat[S[i]] 直接在mat上做匹配就好了 时间复杂度:O(|S||T|/32) 代码 #inc…
A 题意:问你恰好修改一个字符,能不能使得字符串变成回文串 题解:显然直接for一遍,如果长度为偶数,那么不一样的必须是1个:如果长度为奇数,那么不一样的也可以是0个 #include<bits/stdc++.h> using namespace std; string s; int main(){ cin>>s; int tmp = 0; for(int i=0;i<s.size();i++){ if(s[i]!=s[s.size()-1-i]) tmp++; } if(t…
A - Candy Distribution Again 大意:有x个糖给n个小朋友,必须分完,小朋友得到糖数为一个确切值的时候小朋友会开心,求最多的开心数 题解 直接排序然后贪心分,如果分到最后一个有剩余那么开心数-1即可 代码 #include <bits/stdc++.h> #define fi first #define se second #define pii pair<int,int> #define mp make_pair #define pb push_back…
LCS2 - Longest Common Substring II no tags  A string is finite sequence of characters over a non-empty finite set Σ. In this problem, Σ is the set of lowercase letters. Substring, also called factor, is a consecutive sequence of characters occurrence…
题目链接 : https://leetcode-cn.com/problems/palindrome-partitioning-ii/ 题目描述: 给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串. 返回符合要求的最少分割次数. 示例: 输入: "aab" 输出: 1 解释: 进行一次分割就可将 s 分割成 ["aa","b"] 这样两个回文子串. 思路: 动态规划, 思路一: 自顶向下 import functools clas…
题面:P4555 [国家集训队]最长双回文串 题解:就.就考察马拉车的理解 在原始马拉车的基础上多维护个P[i].Q[i]数组,分别表示以i结尾最长回文子串的长度和以i开头的最长回文子串的长度 然后就枚举断点,只能选择#作为断点,因为#..#才是一个字符串:第一个和最后一个#不能作为断点,因为答案要求|X|.|Y|都>=1 就维护答案 代码: #include<cstdio> #include<iostream> #include<cstring> #define…