题目链接:点击查看

题目大意:给出一个字符串 s ,需要求出一个 k ,满足 i ∈ [ 1 , n - k + 1 ]中,每个s[ i : i + k - 1 ]都反转一遍,使得最后得到的字符串字典序最小,若有多个 k 满足条件,求出最小的那个 k

题目分析:读完题后最暴力的方法是 n * n * n ,显然是不行的,考虑是否有规律可循,自己手动模拟了一下发现确实有规律,但是比赛的时候没有发现奇偶又别,于是很可惜的被rj掉了,难过

自己拿着abcd和abcde试试就知道规律了:以 k = 3 为例:

abcd -> Cbad -> CD|AB

abcde -> Cbade -> CDabe -> CDE|BA

在最后结果那个部分我加了一个断点,很显然最后的结果由两部分组成:

  1. 前半部分:s[ k : len ]
  2. 后半部分:
    1. 如果 n - k + 1 为奇数:s[ 1 : k ]
    2. 如果 n - k + 1 为偶数:s[ 1 : k ]翻转

然后n*n暴力维护答案就好了

代码:

#include<iostream>
#include<cstdio>
#include<string>
#include<ctime>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<stack>
#include<climits>
#include<queue>
#include<map>
#include<set>
#include<sstream>
using namespace std;typedef long long LL;typedef unsigned long long ull;const int inf=0x3f3f3f3f;const int N=2e5+100;int main()
{
#ifndef ONLINE_JUDGE
//  freopen("input.txt","r",stdin);
//  freopen("output.txt","w",stdout);
#endif
//  ios::sync_with_stdio(false);int w;cin>>w;while(w--){int n;string s;cin>>n>>s;int ans=1;string mmin=s;for(int k=1;k<n;k++){string temp=s.substr(k);string rev=s.substr(0,k);if((n-k+1)%2==0)reverse(rev.begin(),rev.end());temp+=rev;if(temp<mmin){ans=k+1;mmin=temp;}}cout<<mmin<<endl<<ans<<endl;}return 0;
}

CodeForces - 1316B String Modification(找规律)相关推荐

  1. Codeforce-CodeCraft-20 (Div. 2)-B. String Modification (找规律+模拟)

    Vasya has a string s of length n. He decides to make the following modification to the string: Pick ...

  2. Lieges of Legendre CodeForces - 603C (博弈论,SG找规律)

    大意: 给定$n$堆石子, 两人轮流操作, 每次操作两种选择 $(1)$任选非空堆拿走一个石子 $(2)$任选石子数为$2x(x>0)$的一堆, 替换为$k$堆$x$个石子. ($k$给定) 最 ...

  3. String Modification CodeForces - 1316B(规律)

    Vasya has a string s of length n. He decides to make the following modification to the string: Pick ...

  4. Codeforces Round #715 (Div. 1) B. Almost Sorted 找规律

    传送门 文章目录 题意: 思路: 题意: 思路: 找规律yydsyydsyyds. 一看没什么想法,所以打了个表,好家伙,不打不知道,一打不得了,下面是n=6n=6n=6的符合要求的情况: 不难发现, ...

  5. CodeForces - 603C Lieges of Legendre(博弈+找规律)

    题目链接:点击查看 题目大意:首先给出n堆石子和一个k值,两人轮流按照规则操作,不能操作的一方即为失败,每一次都有两种操作: 从任意一堆石子中取走一个石子 任选一堆偶数个的石子,将其转换成k堆x/2的 ...

  6. *【CodeForces - 202C 】Clear Symmetry (思维,找规律,特判)

    题干: Consider some square matrix A with side n consisting of zeros and ones. There are nrows numbered ...

  7. 【CodeForces - 764A】Taymyr is calling you (找规律,水题)

    题干: Comrade Dujikov is busy choosing artists for Timofey's birthday and is recieving calls from Taym ...

  8. [codeforces 1333A] Little Artem 读懂题+找规律+多举例

    Codeforces Round #632 (Div. 2)   比赛人数12810 [codeforces 1333A]   Little Artem   读懂题+找规律+多举例 总目录详见http ...

  9. Educational Codeforces Round 87 (Rated for Div. 2) C1+C2(几何图形/找规律)

    C1传送门 C2传送门 给出一个正2n边形,求出其最小外接正方形的边长 当n为偶数时 不难发现正多边形刚好有四条边和正方形的四条边重合,观察发现该正多边形的边长刚好为内接圆的直径 当n为奇数时 第一眼 ...

最新文章

  1. python中统计计数的几种方法
  2. HDU - 5242 Game(树形dp+树链剖分/树上贪心+思维)
  3. 【solr专题之四】关于VelocityResponseWriter
  4. mysql + IDEA + JDBC
  5. access的ole对象换成mysql_ACCESS的Ole对象读取写入
  6. 苹果电脑怎么投屏到电视_tcl电视怎么投屏
  7. create-react-app中配置antd按需加载、less、proxy、路径别名
  8. ubuntu14.04 LTS版本下安装配置gem5环境
  9. Android 应用启动速度优化
  10. 计算已知经纬度两点的距离_python
  11. 【C语言】谭浩强C语言程序设计第五版135页例5.11译密码题的新解
  12. 浪潮配置ipim_浪潮服务器管理口IP设置_IPMI设置
  13. 止汗 咒语_咒语机器学习平台上线
  14. 抖音电商直播基地项目运营规划商业品牌计划书方案模板
  15. 微端是什么意思?微端对服务器性能配置要求
  16. 典型的计算机串行和并行总线,串行总线和并行总线的区别
  17. MKS PI V1.0使用说明书
  18. 中国 GitHub 霸榜乱象! 国内程序员的脸都被丢尽了!
  19. Conga在亚太业务增长迅猛之际举办首次亚太用户大会
  20. 我和 XOP的 醉生梦死

热门文章

  1. mysql函数封装_Mysql对文件操作的封装
  2. 新增字段赋值_微服务】155:商品新增业务(完)
  3. 关系型数据库设计规则
  4. QuorumPeerMain.runFromConfig
  5. 分布式架构的负载均衡算法
  6. Redis Hash 哈希 结构
  7. 类文件结构-field
  8. 反射_Class对象功能_获取Field
  9. 分布式文件系统研究-什么是文件系统
  10. ServletFileUpload API详解