CF1537E2 Erase and Extend 题解

分析

通过观察题目,可以证明结果一定是由多次前缀复制得来的。

题目要求你进行删和复制的操作,与其交替着操作,不如直接先删到最优的前缀再进行复制。

现在就是要找最优的前缀。从头一位一位往后遍历。用 \(l\) 来存储目前最优前缀的长度,第 \(i\) 位对应复制后的 \(k\) 位最优前缀就是第 \(i\bmod l\) 位。在往后遍历时,如果下一位的 ASCII 码比最优前缀第 \(i\bmod l\) 位的大,就说明后面没有最优解了,直接 break。如果小于的话,说明当前的解更优,更新一下长度即可。

复杂度 \(\mathcal O(n)\)。

代码

#include<bits/stdc++.h>
using namespace std;
namespace Raiden
{
int work()
{
string s;
int n,k;
int l=1;
cin>>n>>k>>s;
for(int i=0;i<n;i++)
{
if(s[i]>s[i%l])
break;
else if(s[i]<s[i%l])
l=i+1;
}
for(int i=0;i<k;i++)
cout<<s[i%l];
return 0;
}
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
return Raiden::work();
}

题解:CF1537E2 Erase and Extend (Hard Version)的更多相关文章

  1. [CF1537E] Erase and Extend (字符串)

    题面 给一个长度为 n \tt n n 的字符串,你可以进行无限次以下两种操作之一: 删去末尾的字符(此时要保证删去后字符串非空). 把当前整个字符串复制一份,接到自己的后面. 输出最终通过操作能达到 ...

  2. 题解 CF1446D2 【Frequency Problem (Hard Version)】

    给出一个跑得快一点的做法,洛谷最优解 (时间是第二名的 \(\frac{1}{2}\)), CF 第一页 D1 首先找到整个序列的众数 \(G\), 很容易证明答案序列中的两个众数中其中一个是 \(G ...

  3. Codeforces Round #726 (Div.2) A-E1 题解

    A. Arithmetic Array 题目大意:一串数,求添加多少个非负整数后平均值为1 代码: //CF726A #include<bits/stdc++.h> using names ...

  4. 【原创】AC自动机小结

    有了KMP和Trie的基础,就可以学习神奇的AC自动机了.AC自动机其实就是在Trie树上实现KMP,可以完成多模式串的匹配.           AC自动机 其实 就是创建了一个状态的转移图,思想很 ...

  5. JS框架设计之对象扩展一种子模块

    对象扩展 说完了,对象的创建(框架的命名空间的创建)以及如何解决多库之间的命名空间冲突问题之后,接下来,就是要扩展我们的对象,来对框架进行扩展,我们需要一种新功能,将新添加的功能整合到我们定义的对象中 ...

  6. 修改jquery.automeplete,使其支持value匹配

    原生只会去匹配label,可在实际使用中,可能需要匹配的值并不需要显示在label中,经过添加一个matchType属性解决 1.加入matchType选项,并默认为原生匹配 $.widget(&qu ...

  7. nodejs + webpack4 + babel6 结合写Chrome浏览器插件记录

    最近任务不忙,有时间了看一下Chrome插件相关的东西,于是想用nodejs + webpack写一个能直出插件的小工具. 1.nodejs + babel6 + webpack4 在写之前,是有把它 ...

  8. 转自kuangbin的AC自动机(赛前最后一博)

    有了KMP和Trie的基础,就可以学习神奇的AC自动机了.AC自动机其实就是在Trie树上实现KMP,可以完成多模式串的匹配.           AC自动机 其实 就是创建了一个状态的转移图,思想很 ...

  9. H3C S12508单板卡 通过bootware升级software版本

    H3C S12508单板卡 通过bootware升级software版本 案例:S12508更换主控板LST1MRPNC1 ,该板卡状态为Slave状态: 设备状态:S12508共2台做了堆叠,共含4 ...

  10. 并不对劲的复健训练-p5212 SubString

    题目大意 有一个串\(s\),一开始只知道它的一个前缀.有\(q\)(\(q\leq 10^4\))个操作,操作有两种:1.给一个字符串,表示\(s\)(\(s\)总长\(\leq 6\times 1 ...

随机推荐

  1. 构建 OpenWrt

    OpenWrt 是一款路由器操作系统.如果你想要给自己的路由器安装 OpenWrt 的话,一般来说使用别人已经构建好的 OpenWrt 固件就够用了.当然如果你闲得没事干,那么也可以自己构建固件. P ...

  2. springboot 大文件切片上传

    1. 前端(vue element ui & 原生) 初始变量声明: currentFile: {}, // 当前上传的文件 bigFileSliceCount: 20, // 大文件切片后的 ...

  3. mysql vs mongodb

    Comments MongoDB 是NoSQL 数据库,适合存JSON格式数据,MySQL是关系型数据库,适合存table格式数据 MongoDB扩展性更好,MySQL支持主从和cluster但是感觉 ...

  4. 鸿蒙Next-支付宝SDK接入教程

    App适配鸿蒙Next,开始做支付功能了,目前来说只有支付宝支持鸿蒙Next,微信还没上架,但是支付宝官方的文档跟Demo都很老,下载官方的Demo用最新版的DevEco-Studio导入都不成功. ...

  5. 【JS设计模式笔记】-观察者模式(即发布-订阅模式)(结构型)

    发布-订阅模式的作用 比如常见的发送短信就是一个典型的发布-订阅模式,例如,小明.小红去售楼处购买房子,但是售楼处的工作人员告诉小明.小红当前楼盘已经售罄,新楼盘还没有开售,这个时候,小明.小红把自己 ...

  6. 十三,Spring Boot 中注入 Servlet,Filter,Listener

    十三,Spring Boot 中注入 Servlet,Filter,Listener @ 目录 十三,Spring Boot 中注入 Servlet,Filter,Listener 1. 基本介绍 2 ...

  7. 从零开始掌握 Kubernetes:Pod 和 Deployment 的幕后故事

    1. 引言 在如今的技术世界中,随着微服务架构的广泛应用和云原生理念的兴起,应用程序的开发.部署和管理发生了翻天覆地的变化.容器技术的出现使得开发者可以轻松地将应用及其所有依赖打包在一个轻量级.可移植 ...

  8. C++ const常量指针

    const常量指针 const是C++关键字,译为常量,const指针即为常量指针. 分为三类 指向const的指针 const指针 指向const的const指针 指向const的指针 表示指向区域 ...

  9. SpringMVC —— 响应

    响应页面    响应文本数据    响应json数据    响应json集合数据    注解      转换json时使用了类型转换器     

  10. Google Aviator Evaluator 使用入门(一)

    Aviator Evaluator 使用入门(一) https://www.yuque.com/boyan-avfmj/aviatorscript/tvahat 一.什么是规则引擎 定义:规则引擎是一 ...