【CF319D】Have You Ever Heard About the Word?

蓝桥杯试题 算法训练 Have You Ever Heard About the Word? 试题 算法训练 Have You Ever Heard About the Word? 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述   一个字符串的子串是该字符串的一段连续子序列,如bca是abcabc的子串,而cc不是。 一个重复块(repeating block)由一个字符串与自身连接而成,如abcabc是一个重复块,而abcabd, ababab不是。 你有一个由拉... 阅读详情

【CF319D】Have You Ever Heard About the Word?:

String专题又出现啦~(≧▽≦)/~ 这次的题很水的啦0.0
一个字符串的子串是该字符串的一段连续子序列,如bca是abcabc的子串,而cc不是。
一个重复块(repeating block)由一个字符串与自身连接而成,如abcabc是一个重复块,而abcabd, ababab不是。
你有一个由拉丁字符组成的字符串。每一步你要找到它的子串中最短的重复块,如果有多于一个,你必须选择最左边的那个。你要将那个形如XX(X - 某个字符串)的重复块替换成X,换句话说你要删除其中的一个X。重复以上步骤直到字符串中不存在重复块。
最终的字符串会是怎样的?看样例解释来更清楚地理解问题描述。
1<=|S|<=50000

题解:

首先会想到|x|是不递减的。

于是可以枚举长度L。

再每个L设一个断点,xx必定经过两个断点。

两两断点间求最长公共前后缀,这里用hash+二分会快。

然后一波扫过去就好了。

如果找到了,hash就要重构。

来计算一下复杂度。

一共有O(n log n)个断点,每个求最长公共前后缀复杂度log,这一部分是O(n log^2 n )
长度小于L<=n√的最多n√次,L>=n√最多n√中,所以重构复杂度:O(nn√)

Code:

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
#define fo(i, x, y) for(int i = x; i <= y; i ++)
#define min(a, b) ((a) < (b) ? (a) : (b))
#define P pair<int, int>
using namespace std;

const int N = 50005, mo = 998244353, pri = 1e9 + 7, pri2 = 43313;

char str[N];
int n, bz[N], tmp;
ll c[N], ni[N], s[N];

ll ksm(ll x, ll y) {
    ll s = 1;
    for(; y; x = x * x % mo, y >>= 1)
        if(y & 1) s = s * x % mo;
    return s;
}

void Getsum() {
    fo(i, 1, n) s[i] = (s[i - 1] + c[i] * (str[i] - 'a') % mo) % mo;
}

int sum(int x, int y) {
    return ((s[y] - s[x - 1] + mo) * ni[x] % mo);
}

int Getq(int x, int y) {
    int ans = 0;
    for(int l = 1, r = tmp; l <= r;) {
        int m = l + r >> 1;
        if(sum(x - m + 1, x) == sum(y - m + 1, y))
            ans = m, l = m + 1; else r = m - 1;
    }
    return ans;
}

int Geth(int x, int y) {
    int ans = 0;
    for(int l = 1, r = n - y + 1; l <= r;) {
        int m = l + r >> 1;
        if(sum(x, x + m - 1) == sum(y, y + m - 1))
            ans = m, l = m + 1; else r = m - 1;
    }
    return ans;
}

int main() {
    scanf("%s", str + 1); n = strlen(str + 1);

    c[0] = ni[0] = 1;
    ni[1] = ksm(pri, mo - 2); c[1] = pri;
    fo(i, 2, n) ni[i] = ni[i - 1] * ni[1] % mo, c[i] = c[i - 1] * c[1] % mo;

    int n0 = n; Getsum();
    fo(l, 1, n) {
        int xg = 0; tmp = l;
        fo(i, 1, n / l) {
            int x = i * l, y = x + l;
            if(y > n) break;
            int q = Getq(x, y), h = Geth(x, y);
            if(q + h > l) {
                fo(j, x - q + 1, x - q + l) bz[j] = l;
                tmp = q;
                xg = 1;
            } else tmp = l;
        }
        if(xg) {
            int n1 = 0;
            fo(i, 1, n) if(bz[i] != l)
                str[++ n1] = str[i];
            n = n1;
            Getsum();
        }
    }
    fo(i, 1, n) putchar(str[i]);
}
R语言常用命令 R语言常用命令 > ls() character(0) > data <- c(1, 2, 3, 4) > strings <- "Hello World" > ls() [1] "data" "strings" > rm(data) > ls() [1] "strings" > v <- c(1, 2, 3, 4, 5) &gt... 阅读详情

相关推荐

基于USB总线的虚拟摄像头(UVC)原理简介

前面文章中我们分析了虚拟声卡的实现,在文章中我们展示了创建一个虚拟麦克风和虚拟扬声器的技术原理。完成了音频的虚拟化之后,这里就要谈论一下对于视频的虚拟化了——虚拟摄像头的实现。关于虚拟麦克风和虚拟扬声器的实现,可以参考。虚拟摄像头应用也是非常普遍的,例如云桌面远程摄像头的实现,直播技术。目前对于虚拟摄像头有三种实现方式:DirectShow虚拟摄像头,这个是一种比较古老的技术;在新版本应用中,该项技术基本失效了,尤其是UWP框架程序,DirectShow虚拟摄像头就失效了。

tianxilink的博客 5416

CF 319D Have You Ever Heard About The World? 二分Hash判断可行解

题目大意给你一个字符串SS,要求你每次找到一个最短的形如XXXX(即由两个相同的字符串拼接而成)的子串,如有多个找最左边的那一个。然后把这个字符串从XXXX变成XX,问无法操作后的字符串是什么?|S|≤50000|S| \leq 50000解题思路要解决这题,有两个关键的性质是一定要发现的。 1. 每次找到的符合要求的子串的程度是不减的。 2. 在删除相同长度的子串时一定是从左到有又删除的。

YxuanwKeith的博客 1397

Apache NiFi新手必看:从零开始的数据流设计入门教程(含实战案例)

本文为Apache NiFi新手提供从零开始的数据流设计入门指南。通过实战案例,详细讲解了如何利用这一强大的数据采集工具,以可视化拖拽方式构建自动化数据流,实现从文件监控、内容处理到数据入库的全流程,并涵盖核心概念、环境搭建及生产环境调优要点。

weixin_29066781的博客 149

CF 319D(Have You Ever Heard About the Word?-模拟)

D. Have You Ever Heard About the Word? time limit per test 6 seconds memory limit per test 256 megabytes input standard input output standard output A substring of a str

nike0good |Oier&ACMer | 熟能生巧 1816

SystemVerilog学习总结

因为选择的offer是IC验证,以前学的是设计,所以只能再学systemverilog(SV)和UVM了。在学习SV和UVM之前,我认为需要学习以下几个部分:数字电路、c++和verilog。因为IC验证确实有不少别的专业之前没学过数字电路和Verilog,所以还是最好先学习一下。 知识点的总结主要是通过systemverilog验证-测试平台编写指南这本书进行的,所以请看书。通过对这本书的目录进行重点的划分,然后再进行相关知识点的总结。最后,给出自己收集的别的博主IC EDA环境的虚拟机,以及使用虚拟机需

博主毕竟还是人,肯定会有错误,各位看的时候发现错误提出来就好 1万+

QCustomPlot实战:从入门到精通的数据可视化

本文详细介绍了如何使用QCustomPlot进行数据可视化,从基础环境搭建到高级图表定制,涵盖实时监控、多坐标系联动等实战技巧。基于Qt的QCustomPlot库以其强大的绘图能力和灵活的API,帮助开发者快速实现专业级数据可视化效果。

weixin_29003437的博客 115

JZOJsenior4022.【CF319D】Have You Ever Heard About the Word?

problemDescription String专题又出现啦~\(≧▽≦)/~ 这次的题很水的啦0.0 一个字符串的子串是该字符串的一段连续子序列,如bca是abcabc的子串,而cc不是。 一个重复块(repeating block)由一个字符串与自身连接而成,如abcabc是一个重复块,而abcabd, ababab不是。 你有一个由拉丁字符组成的字符串。每一步你要找到它的子串中最

路人黑的纸巾 706

YOLOv11 模型改进全流程:从代码修改到性能跃升,让你打造专属检测利器

无论是科研中需要发表创新点满满的论文,还是企业里要解决特定场景的检测难题,这套方法都能让你在YOLOv11的基础上打造出“量身定制”的检测模型。别再让通用模型的“平庸性能”限制你的项目上限——现在就动手修改代码,让你的YOLOv11模型在精度、速度或小样本适应能力上实现跨越式提升,用技术突破证明你的AI研发实力!本文将带你从代码层面入手,完成从骨干网络到损失函数的全维度改进,真正掌握让YOLOv11“为你所用”的技术实力。该改进对小样本类别(如数据集中仅占5%的“稀有缺陷”)的识别精度提升显著。

m0_71589036的博客 402

CF 319D Have You Ever Heard About the Word?

DescriptionString专题又出现啦~(≧▽≦)/~ 这次的题很水的啦0.0一个字符串的子串是该字符串的一段连续子序列,如bca是abcabc的子串,而cc不是。一个重复块(repeating block)由一个字符串与自身连接而成,如abcabc是一个重复块,而abcabd, ababab不是。你有一个由拉丁字符组成的字符串。每一步你要找到它的子串中最短的重复块,如果有多于一个,你必须选

dance in th dark的博客 801

YOLO26 改进 - 注意力机制 | Mask Attention掩码注意力,可学习掩码矩阵破解低分辨率特征提取难题 | 2025 预印

本文提出了用于低分辨率图像分割的MaskAttn - UNet框架,并将其核心的掩码注意力机制集成到YOLO26中。传统U - Net类模型难以捕捉全局关联,Transformer类模型计算量大,而掩码注意力机制通过可学习的掩码,让模型选择性关注重要区域,融合了卷积的局部效率和注意力的全局视野。其工作流程包括特征适配、掩码生成、定向注意力计算和特征融合。我们将掩码注意力机制代码集成到YOLO26中。

魔改工程师的博客 835

产品需求从场景,初始需求IR,产品需求 OR,设计需求DR,设计规格DS的具体案例说明,以扫地机产品为例

摘要: 以扫地机器人"宠物粪便避障"功能为例,说明从用户场景到产品落地的完整需求转化路径。初始需求(IR)源于养宠家庭痛点,要求100%避障并自动告警;产品需求(OR)转化为≥98%识别准确率等量化指标;设计需求(DR)拆解为感知、决策、执行三大技术模块;最终形成传感器选型(如索尼IMX678)、芯片规格(高通QCS6490)等设计规格(DS)。通过实验室模拟和用户测试验证,该功能使产品溢价30%,养宠家庭购买占比达52%,实现技术与商业价值的统一。

AIoT深度探索者 | 嵌入式系统架构师 深耕物联网(IoT)与人工智能(AI)融合技术,聚焦​​边缘计算、图像开发、低功耗通信协议​​,致力于智能硬件,关注我获取最新技术文章信息与海量资源~ 769

【JZOJ4022】【CF319D】Have You Ever Heard About the Word?(哈希)

Problem   有一个字符串S(|S| ≤ 50000),每次你需要找到最短的形如XX(可以在中间被分成相同的两份)的子串,有多个最短的则选取最左边的,并删除其中的一份(XX → X)。输出最终字符串。 Solution   这道题我一看,感觉可能是SAM之类的东西,想了半天也没想出个什么来,于是就打了个O(n3)O(n3)O(n^3)的暴力。正解是哈希。 RMQ:65poin...

qq_36551189的博客 384

Windows报无法成功完成操作,因为文件包含病毒或潜在的垃圾软件的解决方法

Windows报无法成功完成操作,因为文件包含病毒或潜在的垃圾软件的解决方法 在Windows的搜索框中输入Windows安全中心,搜索到后将其打开 点击病毒和威胁防护将鼠标移动到Microsoft Defender防病毒选项处,将定期扫描打开 下滑找到管理设置 先关闭篡改防护,再点击添加或删除排除项 先点击添加排除项,再点击文件,选择报出异常的文件,将其添加到排除项中,过程中会存在跳框确认,皆点击确定,完成后就可以运行报无法成功完成操作,因为文件包含病毒或潜在的垃圾软件异常的文件

123 2万+

JZOJ4022. 【CF319D】Have You Ever Heard About the Word?

题目描述 Description String专题又出现啦~(≧▽≦)/~ 这次的题很水的啦0.0 一个字符串的子串是该字符串的一段连续子序列,如bca是abcabc的子串,而cc不是。 一个重复块(repeating block)由一个字符串与自身连接而成,如abcabc是一个重复块,而abcabd, ababab不是。 你有一个由拉丁字符组成的字符串。每一...

某司机的黑车 357

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

【CodeForces319D】Have You Ever Heard About the Word?

【题目链接】 点击打开链接 【思路要点】 一个重要的性质是:当我们发现当前串中不存在长度为iii的repeating block时,长度为iii的repeating block不会再出现。 证明较为简单:上述命题等价于当前串中不存在长度为2i2i2i的repeating block时,我们删去一个长度为2j(j&amp;gt;i)2j(j&amp;gt;i)2j(j&gt;i)...

cz_xuyixuan的博客 497

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

English morning 1---SSTMC word of this week about preposition "On"

today, I am gonna to introduce three useful phrases about On. they are : rest on: 依赖于 turn one's back on sb:拒绝帮助(抽象意) stand on your own two feet:独立自主(抽象意) To make it easy to remember, her

Rachel Wang的little tree 391

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

蓝桥杯 ALGO-74 算法训练 连接字符串

编程将两个字符串连接起来。例如country与side相连接成为countryside。   输入两行,每行一个字符串(只包含小写字母,长度不超过100);输出一行一个字符串。 样例输入 country side 样例输出 countryside #include using namespace std; int main() { string s1, s2; ci

柳婼 の blog 922

又开心啦

感谢昨天大家昨天给我的安慰和建议, 特别是LIZA, 你这个小P孩还挺能计划的么, 不错, 比我有条理, 我看看吧, 没准儿我真的能家里家外的一把手呢. 早上阳光又明媚了, 宝宝在枕头旁督促我陪她去公园, 昨天才去过, 今天又要去, 我起不起呢? 猪头昨天还信誓旦旦地说周日早上他陪宝宝去, 结果自己睡的象煮熟了的猪头, 宝宝使劲地叫爸爸, 又亲又拉的, 人家就是纹丝不动. 哎, 当妈不容易啊,

blogremover的专栏 556

The best article about SVM ever (Chinese version)

http://www.dataguru.cn/forum.php?mod=viewthread&tid=371987 Strongly recommend you guys read about this. It clearly illustrates the difference about the logistic regression versus SVM and the whol

qbt4juik的专栏 519

xcode编译出现AFNetworking.framework did not have a CFBundleIdentifier in its Info.plist

这个错误出现的非常奇怪,甚至有点无厘头,因为我在文件夹里发现是有info.plist文件的,而且文件里bundle identifer很正常,这是怎么回事? 遇到这个问题,先分析原因,上次编译的时候很正常,并未有如此现象,那是怎么出来的呢? 今天编译的时候,我看到build phases里有很多cocoapods的重复选项,我就把它们全部删掉,然后pod update,之后果然选项重新构建了,

lindir的专栏 3252

CF:281A.Word Capitalization

#include #include using namespace std; int main(){ string str; while(cin>>str){ if(str[0]>=97) str[0]-=32; cout<<str<<'\n'; } return 0; }

Ac_freedom 889

【NOIP2013模拟联考12】数数(数位dp||类欧几里得)

Description:ztxz16从小立志成为码农,因此一直对数的二进制表示很感兴趣。今天的数学课上,ztxz16学习了等差数列的相关知识。我们知道,一个等差数列可以用三个数A,B,N表示成如下形式:B + A, B + 2 * A, B + 3 * A, …, B + N * Aztxz16想知道对于一个给定的等差数列,把其中每一项用二进制表示后,一共有多少位是1,但他的智商太低无法算出此题,因

Cold_Chair的博客 1231

51nod 1201[整数划分] 1259[整数划分V2] 1597 [有限背包计数问题]

因为觉得这三题差不多,思路有相同的地方也有不同的地方,挺有趣的,所以放在一起。51nod 1201整数划分:题目大意:给出n,将n分为1-n中若干个不同的数的和,求方案数,模一个被模烂的质数。(1<=n<=50000)题解:每个数不同,那么和最小的情况就是1,2,3…, 假设是1-i的和,那么就有i∗(i+1)/2<=n,i<=2n−−√i*(i+1)/2<=n,i<=\sqrt{2n} 所以最

Cold_Chair的博客 1030
上一篇: FFT(快速傅里叶变换)学习小记
下一篇: 【CF261D】Maxim and Increasing Subsequence
Cold_Chair
博客等级 码龄11年 158粉丝 410原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值