首页 > 其他分享 >Codeforces 1316 B. String Modification

Codeforces 1316 B. String Modification

时间:2023-02-03 12:38:43浏览次数:59  
标签:1316 int 反转 Codeforces 字符串 ans Modification 长度 翻转


Codeforces 1316 B. String Modification_字符串


Codeforces 1316 B. String Modification_字符串_02

题意:

反转一个字符串,反转规则为从字符串首字母开头,长度为 Codeforces 1316 B. String Modification_ci_03,反转问一个 $k $时会得到一个新串,求字典序最小的新串和 Codeforces 1316 B. String Modification_ci_03,如果字典序相同,则输出最小的 Codeforces 1316 B. String Modification_ci_03
比赛时被卡, 疯狂 Codeforces 1316 B. String Modification_字符串_06 ,其实举个栗子就能发现翻转的规律。
比如 Codeforces 1316 B. String Modification_字典序_07

  • 翻转长度为 Codeforces 1316 B. String Modification_字符串_08 时最后结果是 Codeforces 1316 B. String Modification_字典序_09
  • 翻转长度为 Codeforces 1316 B. String Modification_字典序_10 时最后结果是 Codeforces 1316 B. String Modification_ci_11
  • 翻转长度为 Codeforces 1316 B. String Modification_字典序_12 时,就是把后面 Codeforces 1316 B. String Modification_ci_13
  • 当翻转长度为奇数时,把前 Codeforces 1316 B. String Modification_ci_14
  • 当翻转长度为偶数时,把前 Codeforces 1316 B. String Modification_ci_14 的字符串倒置后放到后面。
    找到这个规律就很简单了,暴力枚举所有翻转长度求最小即可。

AC代码:

const int N = 10010;
int n, m;
int res, ans, tmp;
int x, y;
string s, a, b, c;

int main()
{
int t;
cin >> t;
while (t--)
{
sd(n);
cin >> s;
a = s;
ans = 1;
rep(i, 1, n - 1)
{
b = s.substr(i); //从start位开始,取str之后的字符串
c = s.substr(0, i); //从a位开始,取b位字符串
if ((n - i - 1) % 2 == 0)
reverse(c.begin(), c.end());
b += c;
if (b < a)
{
a = b;
ans = i + 1;
}
}
cout << a << endl;
cout << ans << endl;
}
return 0;
}


标签:1316,int,反转,Codeforces,字符串,ans,Modification,长度,翻转
From: https://blog.51cto.com/u_15952369/6035754

相关文章

  • Codeforces 1316 D. Nash Matrix(dfs)
    题意:给出一个的棋盘和每个棋盘位置最后能走到的位置,如果一直走不停下来就是,可以停下来就是走到的最后位置,让你输出每个位置的操作字符,上下左右和,停在此位置。我们先找......
  • Codeforces1260 E Tournament(贪心)
    Description:Youareorganizingaboxingtournament,wherenboxerswillparticipate(ispowerof),andyourfriendisoneofthem.Allboxershavedifferents......
  • Codeforces 1155D Beautiful Array
    给你n个数字的数组然后还有一个x,你可以选择一段区间乘上x,输出最大子段和。用一个二维dp来做就行了AC代码:#include<cstdio>#include<cstring>#include<iostream>#include<......
  • codeforces 1257E The Contest(lis)
    题意:3堆数,要求使得第一堆的数为前缀,第三堆数为后缀,第二堆数为剩下的数,要求最少调整多少个数的位置使得要求成立。其实就是就把a1,a2,a3排个序然后拼成一个数组,问题转为一个......
  • codeforces 1257C Dominated Subarray
    题意就是找到一个最小的子区间使得这个区间中只有一个数的个数为2.AC代码:#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<vector>#inclu......
  • Codeforces1151B-Dima and a Bad XOR(构造)
    这道题真的想复杂了,作为div2的B题肯定不算难。只要构造出任意一种异或和大于1就行,如果第一列的值异或和>1,就直接全输入1即可,如果等于0,我们只要在任意一行中找到一个不等于......
  • Codeforces Round #661 (Div. 3)
    A.RemoveSmallest题意:给定一个序列,每次操作可以任选两个差的绝对值小于等于排序后计算相邻数的差,只要有大于AC代码:constintN=2e5+50;intn,m;inta[N];intmain......
  • Codeforces Round #662 (Div. 2)
    A.RainbowDash,FluttershyandChessColoring题意:有手动写几个找找规律。AC代码:intn,m;intmain(){intT;sd(T);while(T--){sd(n);pd(n/2+1);......
  • Codeforces Round #658 (Div. 2)
    ACommonSubsequence只要找到有一个相同的元素输出即可。AC代码:constintN=1010;inta[N],b[N];intans;intcnt[N];intmain(){intt;sd(t);while(t--){......
  • Codeforces Round #657 (Div. 2)
    A.AcaciusandString题意:给你一个串,你可以把换成任意字符,使得这个串最后只出现一次暴力枚举AC代码:strings;intn;stringT="abacaba";boolcheck(string&a){int......