- 2024-11-16洛谷 P2890 [USACO07OPEN] Cheapest Palindrome G 做题记录
我不会区间dp。设\(f_{i,j}\)表示使得区间\([i,j]\)为回文串的最小操作代价,\(cost_{i,j}\)表示字母\(i\)删除/添加的耗费,那么显而易见的,我们有:\(f_{i,j}\to\min(f_{i,j-1}+\min(cost_{s_j,0},cost_{s_j,1}),f_{i+1,j}+\min(cost_{s_i,0},cost_{s_i,1}))\)。当\(s_i
- 2024-11-14Reverse and Add UVA - 10018
//ReverseandAddUVA-10018.cpp:此文件包含"main"函数。程序执行将在此处开始并结束。///*https://vjudge.net/problem/UVA-10018#author=md_bayazidThe“reverseandadd”methodissimple:chooseanumber,reverseitsdigitsandaddittotheoriginal.I
- 2024-10-20闯关leetcode——125. Valid Palindrome
大纲题目地址内容解题代码地址题目地址https://leetcode.com/problems/valid-palindrome/description/内容Aphraseisapalindromeif,afterconvertingalluppercaselettersintolowercaselettersandremovingallnon-alphanumericcharacters,itre
- 2024-10-10编写一个程序递归判断一个字符串是否为回文。回文是指从前往后读和从后往前读都一样的单词、短语、数字或其他字符序列。
defis_string_palindrome(string):iflen(string)<2:#设置出口returnTrueelse:#判断首末位是否相同ifstring[0]==string[len(string)-1]:#用列表来删除首末位相同字符list1=list(string)list1.pop(0)list1.pop()string=''.join(list1)#设置过程returnis_str
- 2024-08-19CF2004 EDU169 F. Make a Palindrome
首先考虑对于一个序列直接怎么\(O(n)\)求\(f\)值,就发现考虑维护两个指针\(l,r\),如果\(a_l=a_r\),则\(l+1,r-1\),否则我们就让小的那一个分裂,那么每次操作一定可以减少长度,所以最优。然后就可以\(O(n^3)\),考虑换一种可优化的方式计算\(f\),通过猜想大概就是看一下前缀后缀集
- 2024-07-24Palindrome
O(n^2)的DP是显然的,但没有优化思路。考虑证伪数据范围。发现n>2600时,根据抽屉原理,一定有一个字符出现了至少101次。点击查看代码#include<bits/stdc++.h>usingnamespacestd;intf[3005][3005];intg[3005][3005];chars[50005];intcnt[30],pi,pj;stringtmp="";vo
- 2024-07-12[CF1656G] Cycle Palindrome 的题解
题目大意给定一个长度为\(n\)的数列\(a\),要求求出一个排列\(p\)满足\(a_{p_1},a_{p_2},\cdots,a_{p_n}\)是一个回文字符串而且把\(i\)向\(p_i\)连边得到的图中只有一个环。数据范围满足,\(1\le\sumn\le2\times10^5\)。思路先不考虑\(p\)是否构成满足要求的环
- 2024-07-07D - Avoid K Palindrome
D-AvoidKPalindromehttps://atcoder.jp/contests/abc359/tasks/abc359_d 思路https://atcoder.jp/contests/abc359/submissions/54822869状压DP以K二进制位表示K字符串(由AB组成),判断并记录是否为回文。dp[i][j] --前i个字符,如果以j(k字符状压表示)结尾,是goodstrin
- 2024-07-02P6754 [BalticOI 2013 Day1] Palindrome-Free Numbers
数据范围一眼数位dp。关键条件为如果一个数字串的一个长度大于 11 的子串也为回文串的话,那么我们也定义这个数字串为回文串。仔细思考发现一旦两个连续的数相同(偶回文)或两个数隔一个数相同(奇回文)都是回文,所以要保证连续三个数不相同,记录前两位即可。注意事项:1.前导零不应为0
- 2024-06-16[AGC001D] Arrays and Palindrome
题意有长度为\(n\)的字符串\(S\),与\(a,b\)两个序列。满足\(\suma_i=n,\sumb_i=n\)。若满足\(S\)的以下子段都为回文串:最前面的\(a_1\)个字符,以及紧接着的\(a_2\)个字符...最前面的\(b_1\)个字符,以及紧接着的\(b_2\)个字符...则\(S\)的所有字符
- 2024-06-11LeetCode 409 Longest Palindrome All In One
LeetCode409LongestPalindromeAllInOneLeetCode409最长回文算法题解Solutions//MapfunctionlongestPalindrome(s:string):number{constmap=newMap();letlen=0;for(leti=0;i<s.length;i++){if(map.has(s[i])){//配对,消元
- 2024-04-20ABC 286 C - Rotate and Palindrome
题目链接:注意到“您可以按任意顺序执行以下两种运算零次或多次”。因此,解决这个问题的一个重要观察点是,你可以假设\(A\)操作执行了几次,然后\(B\)操作执行了几次。你也可以假设\(A\)操作最多被执行\(N\)次(因为执行\(N\)次就会使它处于原始状态)有了这个观察结果,你就
- 2024-03-27LeetCode-9 Palindrome Number
9.PalindromeNumber easyGivenaninteger x,return true if x isa palindrome ,and false otherwise. Example1:Input:x=121Output:trueExplanation:121readsas121fromlefttorightandfromrighttoleft.Example2:Input:x=-
- 2024-03-05AT_abc331_f [ABC331F] Palindrome Query 题解
分析线段树。每个节点维护两个值:$s[l\dotsr]$和$s[r\dotsl]$。判断字串是否是回文直接就是询问的答案维护出来的两个值是否相同。首先想到用线段树暴力维护。第一个值很显然是两个儿子的第一个值加起来,第二个值是反着加起来。得到很酷的代码:ilvoidup(intnow){ tr[now
- 2024-03-01CF1827C Palindrome Partition 题解
CF1827CPalindromePartition题解题面题目传送门。称一个字符串是好的,当且仅当它是一个长度为偶数的回文串或由若干长度为偶数的回文串拼接而成。给定一个长度为\(n\)的字符串\(s\),求有多少\(s\)的子串是好的。$1\len\le5\cdot10^5$,\(s\)仅包含小写字母。
- 2024-02-23A smart way to invert a number
/*Thisismyhomeworktodaytojudgeanumberwhetherit'sapalindrome//Mostofususearraytosolvetheproblem,butIfindawaydonotneedanarray.*/include<stdio.h>intmain(intargc,constchar*argv[]){intx,m,n=0;printf(&quo
- 2024-02-19USACO 2024 February Contest, Bronze Problem 1. Palindrome Game
1.猜结论2.证明如果\(s<=9\)则\(Bessie\)必赢。如果\(s=10\)则\(Elsie\)必赢。如果\(10<s<=19\)则\(Bessie\)可以减去\(s-10\),使自己必赢。如果\(s=20\)则\(Bessie\)无论如何减去一个回文数都会离\(10\)差一个个位数,\(Elsie\)减去这个个位
- 2024-01-07[ABC331F] Palindrome Query 题解
思路判断一个字符串是否是回文串,可以从它的本质出发:正着读和倒着读是一样的。快速判断它正着和反着是否一样,用字符串哈希即可。又因为涉及单点修改,区间查询,那么使用线段树维护这两个值就行了。这里讲一下如何pushup。以正着的哈希值为例:我们要更新\(p\)这个点的\(hash\)值,
- 2023-12-25『LeetCode』9. 回文数 Palindrome Number
题目描述给你一个整数x,如果x是一个回文整数,返回true;否则,返回false。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121是回文,而123不是。示例1:输入:x=121输出:true示例2:输入:x=-121输出:false解释:从左向右读,为-121。从右向左读,为121-。因此
- 2023-12-03F - Palindrome Query
F-PalindromeQueryProblemStatementYouaregivenastring$S$oflength$N$consistingoflowercaseEnglishletters.Process$Q$queriesdescribedbelowintheordertheyaregiven.Therearetwotypesofqueries:1xc:Changethe$x$-thcharactero
- 2023-12-03ABC 331 F - Palindrome Query(字符串哈希,树状数组)
字符串哈希[OI-Wiki](字符串哈希-OIWiki(oi-wiki.org))分为两种哈希方式:以左为高位和以右为高位如果只是快速查询每个字串的哈希值,用以左为高位比较简单,即\[Hash[l...r]=Hash[1...r]-Hash[1...(l-1)]\timesbase^{r-l+1}\]但是如果有修改操作,需要将每一位的Hash值存
- 2023-11-29CF1827C Palindrome Partition 题解
题目链接点击打开链接题目解法首先考虑一个朴素的\(dp\)令\(f_i\)表示以\(i\)结尾的合法子串的个数为了不重不漏,我们令\(le_i\)表示以\(i\)为右端点,离\(i\)最近的偶回文串的左端点,然后不难得到转移为\(f_i=f_{le_i-1}+1\)为什么不会漏?考虑以\(i\)为右端点,且比
- 2023-11-14Palindrome-less Arrays
here哥们不会组合数学。首先类似这题,得出没有回文串的充要条件是没有长度为3的回文串。长度为3的回文串,\(a_i,a_{i+1},a_{i+2}\),只要满足\(a_i\neqa_{i+2}\)即可,也就是说奇数位、偶数位抠出来,新数组中相邻的数不相同。考虑dp,一种显然的dp是设\(f_{i,j}\)为\([1,
- 2023-09-282023 ICPC 网络赛2 L Super-palindrome 字符串 border KMP dp
传送门给出一个\(5000\)长的字符串判断有多少个连续子串是超级回文的。这里超级回文的定义是将字符串分成\(2k\)段每段按照回文对应相等。设\(f_{l,r}\)表示区间\(l,r\)是否是符合要求的。引入\(border\)的定义:最长的前缀和后缀匹配长度。容易想到我们如果暴力枚举每个区间来
- 2023-09-121136 A Delayed Palindrome
题目:Considerapositiveinteger N writteninstandardnotationwith k+1 digits ai as ak⋯a1a0 with 0≤ai<10 forall i and ak>0.Then N is palindromic ifandonlyif ai=ak−i forall i.Zeroiswritten0andisalsopalindr