CF 7D Palindrome Degree

2023-05-16

          • 传送门
          • 思路
          • 参考代码

传送门
思路

  不是马拉车加随便 DP 乱搞?本来想复习一下马拉车的,结果拉出了许多事端(修复了 OI Learner Judge 的严重 bug——一个害我调了两节课的 bug)。唉,最后的原因居然是马拉车没有减一(maxRight 我是写的闭区间),害得我调了这么久的傻逼题。唉,我太弱啦!大家都用哈希过了,太强啦!

  设 fi f i 表示你懂的,如果 0i 0 ∼ i 是回文串,那就转移(注意差一错误),否则为 0 0 <script type="math/tex" id="MathJax-Element-41">0</script>。唉这题这么傻逼就自己去想吧,反正我太弱了,马拉车写错了,调了一晚上,唉,我太弱啦!

参考代码
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <cassert>
#include <cctype>
#include <climits>
#include <ctime>
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <stack>
#include <queue>
#include <deque>
#include <map>
#include <set>
#include <bitset>
#include <list>
#include <functional>
#define loop register int
typedef long long LL;
typedef unsigned long long ULL;
using std::cin;
using std::cout;
using std::endl;
typedef LL INT_PUT;
INT_PUT readIn()
{
    INT_PUT a = 0; bool positive = true;
    char ch = getchar();
    while (!(ch == '-' || std::isdigit(ch))) ch = getchar();
    if (ch == '-') { positive = false; ch = getchar(); }
    while (std::isdigit(ch)) { a = a * 10 - (ch - '0'); ch = getchar(); }
    return positive ? -a : a;
}
void printOut(INT_PUT x)
{
    char buffer[20]; int length = 0;
    if (x < 0) putchar('-'); else x = -x;
    do buffer[length++] = -(x % 10) + '0'; while (x /= 10);
    do putchar(buffer[--length]); while (length);
    putchar('\n');
}

const int maxn = int(6e6) + 5;

struct Manacher
{
    char str[maxn * 2];
    int length;
    int rl[maxn * 2];
    void init(const char* s)
    {
        str[length++] = '#';
        for (; *s != '\0'; s++)
        {
            str[length++] = *s;
            str[length++] = '#';
        }
    }
    void manacher()
    {
        rl[0] = 1;
        int maxR = 0;
        int center = 0;
        for (loop i = 1; i < length; i++)
        {
            register int cnt;
            if (i <= maxR)
                cnt = std::min(maxR - i + 1, rl[(center << 1) - i]);
            else
                cnt = 1;

            while (i - cnt >= 0 && i + cnt < length &&
                str[i - cnt] == str[i + cnt])
                cnt++;
            if (i + cnt - 1 > maxR) // note: -1!!!
            {
                maxR = i + cnt - 1;
                center = i;
            }
            rl[i] = cnt;
        }
    }
    inline bool judge(int i)
    {
        return rl[i + 1] >= i + 2;
    }
} manacher;

int n;
char str[maxn];
int f[maxn];
inline bool isValid(char ch)
{
    return std::isalpha(ch) || std::isdigit(ch);
}

void run()
{
    char ch = getchar();
    while (!isValid(ch)) ch = getchar();
    while (isValid(ch))
    {
        str[n++] = ch;
        ch = getchar();
    }
    //printOut(n);
    manacher.init(str);
    manacher.manacher();

    register LL ans = 1;
    f[0] = 1;
    for (loop i = 1; i < n; i++)
    {
        if (manacher.judge(i))
            f[i] = f[(i - 1) >> 1] + 1;
        else
            f[i] = 0;
        ans += f[i];
    }
    printOut(ans);
}

int main()
{
    run();
    return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CF 7D Palindrome Degree 的相关文章

  • B - Palindrome-phobia(CODE FESTIVAL 2017 Final)

    题目链接 https cf17 final open contest atcoder jp tasks cf17 final b 解题思路 通过找规律发现出现的次数最多的字符与其他两个字符数量的差不能大于1 AC代码 include lt
  • CF 7D Palindrome Degree

    传送门思路参考代码 传送门 思路 不是马拉车加随便 DP 乱搞 xff1f 本来想复习一下马拉车的 xff0c 结果拉出了许多事端 xff08 修复了 OI Learner Judge 的严重 bug 一个害我调了两节课的 bug xff0
  • Leetcode: Palindrome Partitioning I & II

    Problem I Palindrome Partitioning I Given a string s partition s such that every substring of the partition is a palindr
  • 131. Palindrome Partitioning

    文章目录 1 题目理解2 回溯3 动态规划 1 题目理解 输入 xff1a 字符串s 规则 xff1a 将字符串s分割 xff0c 分割后每一个部分都是一个回文串 输出 xff1a 所有的分割方式 Example 1 Input s 61
  • 9. Palindrome Number

    Palindrome Number Easy Determine whether an integer is a palindrome An integer is a palindrome when it reads the same ba
  • 【leetcode】697. 数组的度(degree-of-an-array)(模拟)[简单]

    链接 https leetcode cn com problems degree of an array 耗时 解题 xff1a 1 h 29 min 题解 xff1a 13 min 题意 给定一个非空且只包含非负数的整数数组 nums x
  • palindrome-partitioning

    题目 xff1a 给定一个字符串s xff0c 分割s使得s的每一个子串都是回文串 返回所有的回文分割结果 例如 给定字符串s 61 aab 返回 aa b a a b Given a string s partition s such t
  • 验证字符串是否是旋转回文的有效方法?

    旋转回文就像 1234321 3432112 最简单的方法是将字符串切成不同的部分 然后将它们连接起来 看看该字符串是否是回文 这将需要 O n 2 因为有 n 次切割 并且对于每次切割 我们需要 O n 来检查字符串是否是回文 我想知道是
  • 检查字符串是否为回文

    A 回文是一个单词 短语 数字或其他单位序列 可以在任一方向以相同的方式阅读 为了检查一个单词是否是回文 我获取该单词的字符数组并比较字符 我测试了它 它似乎有效 但我想知道这是否正确或者是否有需要改进的地方 这是我的代码 public c
  • 添加最少数量的字符来形成回文

    问题 给定任何字符串 添加尽可能少的字符 使其在线性时间内成为回文 I m only able to come up with a O N2 solution 有人可以帮我解决 O N 问题吗 恢复字符串 使用修改过的高德莫里斯普拉特查找最
  • 使用正则表达式查找回文

    这个问题是为了试图理解以下答案之一 如何使用正则表达式检查字符串是否为回文 给出的答案马库斯 贾德罗 is 1 2 有人可以解释一下 这里到底发生了什么 我需要做类似的事情Perl 但无法理解这个解决方案 PS 我对 Perl 不太擅长 所
  • 获取奇数长度回文

    我试图找到最长的奇数长度回文 但我编写的代码没有给我完整的回文 只是其中的一部分 任何帮助都会很棒 def get odd palindrome at s index str int gt str gt get odd palindrome
  • 欧拉问题#4

    使用Python 我试图解决问题 4 of the 欧拉计划问题 有人可以告诉我我做错了什么吗 问题是找到由两个 3 位数乘积组成的最大回文数 这是我到目前为止所拥有的 import math def main for z in range
  • 使用 JavaScript 进行递归回文检查

    我试图使用 javascript 通过递归来找出字符串是否是回文 但我无法弄清楚代码中缺少什么 var firstCharacter function str return str slice 0 1 var lastCharacter f
  • 下一个更高的素数和回文数

    是否有关于从给定的整数中求解下一个更高的素数和回文数的建议 这是我正在尝试的片段 但它有点慢 请建议我是否有任何好的算法可以测试 usr bin python def next higher n while True s str n if
  • 使用堆栈检查给定字符串是否为回文[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 Folks 我最近接受采访并被问到一个关于回文的问题 给定一个字符串 可能代表一个日期 检查它是否是一个 回文或不使用堆栈 我试图想出解决
  • 一种更好的算法来查找数字字符串的下一个回文

    首先这里有一个问题 如果从左到右和从右到左读取的正整数在十进制系统中的表示相同 则该正整数称为回文 对于给定的不超过1000000位的正整数K 将大于K的最小回文数的值写入输出 显示的数字始终不带前导零 输入 第一行包含整数 t 即测试用例
  • 如何计算java中相同(PALINDROME)的单词数

    我是一名 Java 开发新手 我想用Java编写代码来计算段落中回文词的数量 假设是 用户可以输入包含尽可能多的句子的段落 每个单词之间以空格分隔 每个句子之间以句点分隔 单词前后的标点符号将被忽略 而单词内部的标点符号将被计算在内 输入示
  • 从文本文件打印所有回文

    我看了这个问题 BASH 回文检查器 https stackoverflow com questions 26601234 bash palindrome checker 这就是该线程中问题答案所显示的内容 grep E a z 3 45
  • 递归函数:检查 Java 中的回文数

    我有一个类检查字符串是否是回文 我有两个问题 1 这是检查回文的最有效方法吗 2 这可以递归实现吗 public class Words public static boolean isPalindrome String word Stri

随机推荐

  • Luogu 3645 [APIO 2015] 雅加达的摩天楼

    传送门思路正解参考代码Update 传送门 思路 唉 xff0c 我太弱了 xff0c 我都看出来要分块了 xff0c 就是做不来 不过终于把题读对了 先来看子任务三怎么做 显然可以有一个 O m 2 O m 2
  • Luogu 3644 [APIO 2015] 八邻旁之桥

    传送门思路当 k 61 2 时参考代码 传送门 思路 唉 xff0c 我太弱了 xff0c 什么都不会 xff0c 题也做不来 很明显这道题先要把不过河的人排除了 xff0c 剩下的都是要过河的 当 k 61 1 k 61 1 时 xff0
  • Luogu 3646 [APIO 2015] 巴厘岛的雕塑

    传送门总结 APIO 2015思路参考代码总结 传送门 总结 APIO 2015 争取今天做完一套 QAQ T1 我最多之能想到从高位向低位做 xff0c 然后就完全不会了 xff1b T2 我想到了分情况讨论 xff0c 但是没有建图成功
  • UOJ 2016 [APIO 2016] Gap

    传送门思路参考代码交互题 交互题大致形式Windows 平台下 xff08 Dev C 43 43 xff09 Ubuntu 平台下 传送门 思路 唉 xff0c 我太弱了 xff0c 什么都不会 xff0c 题也做不来 这道题简直就是利用
  • CF 940F Machine Learning

    传送门题目大意思路参考代码Remarks 传送门 题目大意 给你一个数组 a 1 n n 10 5 a 1 n
  • CF 976D Degree Set

    传送门题目大意思路参考代码总结 传送门 题目大意 给你一个长度为 n n 的正整数序列 d 1 d 2 d n d1 d2 dn xff08 d 1 lt d 2 lt lt d n
  • Luogu 3778 [APIO 2017] 商旅

    传送门思路参考代码 传送门 思路 唉 xff0c 我太弱了 xff0c 什么都不会 看到这道题就想到了二分答案找负环 xff0c 但是怎么做呢 xff1f 完全不会 唉 xff0c 我太弱啦 xff01 先注意题目中说可以重复经过点和边 x
  • CF 963E Circles of Waiting

    传送门题目大意思路参考代码 传送门 题目大意 在平面直角坐标系上 xff0c 有一个神奇的点 xff0c 一开始在 0 0 0 0 每秒钟这个点都会随机移动 xff1a 如果它在 x y
  • CF 976F Minimal k-covering

    传送门题目大意 输入格式输出格式 思路参考代码 传送门 题目大意 给你一张二分图 G 61 U V E G 61 U V
  • CF 963A Alternating Sum

    传送门思路参考代码 传送门 思路 唉 xff0c 我太弱了 xff0c 什么都不会 xff0c 好不容易做得来一道题 xff0c 还是 A 题 xff08 所以不要瞧不起 A 题 xff09 xff0c 结果还写错了 xff08 不知道为什
  • iOS中瀑布流布局详解

    前段时间在逛淘宝的时候发现淘宝的商品界面的布局是瀑布流 我记得明明之前不是瀑布流的 x1f611 刚好手上活忙完了 xff0c 写了一个瀑布流的布局 xff0c 简单的封装了下 xff0c 以便日后使用 x1f60f 其实说到底瀑布流也就是
  • Luogu 2146 [NOI 2015] 软件包管理器

    传送门思路参考代码 传送门 思路 唉 xff0c 我太弱了 xff0c 什么都不会 xff0c 好不容易遇到一道傻逼题 xff0c 又出了个傻逼错误 xff0c 爆得只剩 30 30 分了 唉 xff0c 我太弱啦 xff01 显然 xff
  • Luogu 2150 [NOI 2015] 寿司晚宴

    传送门思路对于 30 30 30 的数据对于 100 100 100 的数据参考代码 传送门 思路 唉 xff0c 我太弱了 xff0c 什么都不会 xff0c 完全做不来 xff0c 连暴力都打不来 主要好像是因为我从来没有做过以质因子为
  • Luogu 3649 [APIO 2014] 回文串

    传送门思路Manacher 算法 特殊字符回文半径算法与实现本质不同的回文串个数 正解参考代码总结 传送门 思路 唉 xff0c 我太弱了 xff0c 什么都不会 xff0c 这道题各路神仙都说是模板题 xff0c 但我觉得完全不可做 xf
  • Luogu 2168 [NOI 2015] 荷马史诗

    传送门思路参考代码 传送门 思路 唉 xff0c 我太弱了 xff0c 什么都不会 xff0c 连哈夫曼树都不会 这道题就是一个 k k 叉哈夫曼树 题目要求满足两个条件 一是代价最小 二是最长长度最小 最长长度最小很好解决 只需要优先合并
  • Luogu 2178 [NOI 2015] 品酒大会

    传送门思路参考代码 传送门 思路 唉 xff0c 我太弱了 xff0c 什么都不会 xff0c 做了两个星期的题 xff0c 自己做出来的才只有这一道 xff0c 唉 xff0c 我太弱啦 xff01 我们考虑第一问怎么做 题目中相似的概念
  • Luogu 1117 [NOI 2016] 优秀的拆分

    传送门思路利用后缀数组解决重复子串问题注意事项参考代码 传送门 思路 唉 xff0c 我太弱了 xff0c 什么都不会 xff0c 连暴力都想不到 xff0c 唉 xff0c 我太弱啦 xff01 考虑暴力法 xff0c 可以枚举一个中间点
  • Luogu 1712 [NOI 2016] 区间

    传送门思路参考代码 传送门 思路 唉 xff0c 我太弱了 xff0c 什么都不会 xff0c 这么个傻逼题 xff0c 居然把离散化写错了 xff0c 唉 xff0c 我太弱啦 xff01 显然我们可以考虑枚举最短长度和最长长度 xff0
  • CF 977F Consecutive Subsequence

    传送门思路参考代码 传送门 思路 CF 的第一场 div3 xff0c 在我提交了一份有错的代码后突然不能提交了 xff0c 在跑什么 System Testing xff0c 我就跟它杠上了 xff0c 直到它评测完 唉 xff0c 我太
  • CF 7D Palindrome Degree

    传送门思路参考代码 传送门 思路 不是马拉车加随便 DP 乱搞 xff1f 本来想复习一下马拉车的 xff0c 结果拉出了许多事端 xff08 修复了 OI Learner Judge 的严重 bug 一个害我调了两节课的 bug xff0