CodeCraft-20 (Div. 2) B. String Modification (字符串,规律)
2024-09-08 02:26:47
题意:有一个长度为\(n\)的字符串,你可以选取一个值\(k(1\le k \le n)\),然后遍历字符串,每次将区间长度为\(k\)的字符串反转,求反转后字典序最小的字符串,并输出\(k\)的值.
题解:这题我是打表找规律写的,观察样例不难发现,当区间长度为\(k\)时,答案字符串就是将前\(k-1\)个字符移到了尾部,并且,假如\(k\)的奇偶性和\(n\)相同,那么这前\(k-1\)个字符就要反转,所以我们只要遍历\(k\),然后模拟维护一个字典序最小的字符串即可.
代码:
int t;
int n;
string s; int main() {
ios::sync_with_stdio(false);cin.tie(0);
cin>>t;
while(t--){
cin>>n>>s;
string ans=s;
int cnt=1;
for(int i=1;i<=n;++i){
string tmp1=s.substr(i-1,n);
string tmp2=s.substr(0,i-1);
if(i%2==n%2)
reverse(tmp2.begin(),tmp2.end());
tmp1+=tmp2;
if(tmp1<ans){
ans=tmp1;
cnt=i;
}
}
cout<<ans<<endl;
cout<<cnt<<endl;
} return 0;
}
最新文章
- Shader 学习笔记
- css 温故而知新 slideDown/slideUp 新思路
- javascript中的链表结构—双向链表
- 【转】Oracle数据库中Sequence的用法
- makefile实例(2)-多个文件实例
- 先声明再定义的必要性 .xml
- VB-获取某字符在其中出现的次数
- UCOS 堆栈大小 计算 (堆栈的决定性因素)
- WPF 绑定
- voa 2015 / 4 / 27
- Zookeeper 快速入门(上)
- 用pyinstaller打包python程序,解决打包时的错误:Cannot find existing PyQt5 plugin directories
- SQL基本注入演示
- docker(ce) on Ubuntu
- 【Selenium-WebDriver自学】Selenium-RC脚本编写(十)
- 助你简化开发的 jQuery 插件
- latex中文模板
- (LeetCode 41)First Missing Positive
- 如何检查 IP是否冲突了
- Android的静默安装
热门文章
- Docker 镜像管理及基础命令(二)
- 【葵花宝典】一天掌握Docker
- Ubuntu Terminal命令行新建仓库并推送到远程仓库
- Ribbon负载均衡服务调用
- 【转】Js中的window.parent ,window.top,window.self 详解
- JVM(二)类加载的时机及其过程
- CentOS7,非LVM根分区扩容步骤:
- Let’s Encrypt/Certbot移除/remove/revoke不需要的域名证书
- javamail发送邮件,支持yahoo,google,163.com,qq.com邮件发送
- 你应该了解的25个JS技巧