CF1552A Subsequence Permutation(string排序大法)

简介: CF1552A Subsequence Permutation(string排序大法)

题目描述



A string ss of length nn , consisting of lowercase letters of the English alphabet, is given.


You must choose some number kk between 00 and nn . Then, you select kk characters of ss and permute them however you want. In this process, the positions of the other n-kn−k characters remain unchanged. You have to perform this operation exactly once.


For example, if s=\texttt{"andrea"}s="andrea" , you can choose the k=4k=4 characters \texttt{"a_d_ea"} and permute them into \texttt{"d_e_aa"} so that after the operation the string becomes \texttt{"dneraa"}"dneraa" .


Determine the minimum kk so that it is possible to sort ss alphabetically (that is, after the operation its characters appear in alphabetical order).


输入格式



The first line contains a single integer tt ( 1 \le t \le 10001≤t≤1000 ) — the number of test cases. Then tt test cases follow.


The first line of each test case contains one integer nn ( 1 \le n \le 401≤n≤40 ) — the length of the string.


The second line of each test case contains the string ss . It is guaranteed that ss contains only lowercase letters of the English alphabet.


输出格式



For each test case, output the minimum kk that allows you to obtain a string sorted alphabetically, through the operation described above.


题意翻译



题目大意:


有 t 组数据,每组数据会给你一个长度为 n 的字符串 s 。

你可以选择 k 个数,并把这 k 个数排序。使字符串 s 最后按照字典序排序。输出 k 的最小值。


输入输出样例



输入 #1复制

4

3

lol

10

codeforces

5

aaaaa

4

dcba


输出 #1复制

2

6

0

4


说明/提示



In the first test case, we can choose the k=2k=2 characters \texttt{"_ol"} and rearrange them as \texttt{"_lo"} (so the resulting string is \texttt{"llo"}"llo" ). It is not possible to sort the string choosing strictly less than 22 characters.


In the second test case, one possible way to sort ss is to consider the k=6k=6 characters \texttt{"_o__force_"} and rearrange them as \texttt{"_c__efoor_"} (so the resulting string is \texttt{"ccdeefoors"}"ccdeefoors" ). One can show that it is not possible to sort the string choosing strictly less than 66 characters.


In the third test case, string ss is already sorted (so we can choose k=0k=0 characters).


In the fourth test case, we can choose all k=4k=4 characters \texttt{"dcba"}"dcba" and reverse the whole string (so the resulting string is \texttt{"abcd"}"abcd" ).


题意,我们可以先把字符串拍好序,然后我们可以在进行比较字符串,找出几个不同。

#include<bits/stdc++.h> 
using namespace std;
int t,n;
string s1,s2;//string永远的神 
signed main(){
  cin>>t;
  while(t--){
    cin>>n>>s1;
    s2=s1;
    sort(s2.begin(),s2.begin()+s2.size());//先完整的排一遍序 
    int ans=0;
    for(int i=0;i<s2.size();i++)//然后找不同,看有几个 
      if(s1[i]!=s2[i]) ans++; 
    cout<<ans<<endl;
  }
}//字典序排序 


相关文章
CF1553B Reverse String(数学思维)
CF1553B Reverse String(数学思维)
40 0
|
机器学习/深度学习
CF71A Way Too Long Words(string简单模拟)
CF71A Way Too Long Words(string简单模拟)
64 0
|
C++
【PAT甲级 - C++题解】1040 Longest Symmetric String
【PAT甲级 - C++题解】1040 Longest Symmetric String
66 0
LeetCode 438. Find All Anagrams in a String
Given a string s and a non-empty string p, find all the start indices of p's anagrams in s. Strings consists of lowercase English letters only and the length of both strings s and p will not be larger than 20,100. The order of output does not matter.
89 0
LeetCode 438. Find All Anagrams in a String
|
机器学习/深度学习 NoSQL 算法
LeetCode 344. 反转字符串 Reverse String
LeetCode 344. 反转字符串 Reverse String
|
存储 测试技术
(转)leetcode:Find All Anagrams in a String 滑动窗口方法总结
今天做了几道滑动窗口的题,稍微总结一下。 起因源于早上在leetcode上pick one,随机到了一个easy的题目,想着随便做了,结果半天也找不到最优解,耗时300多ms,A是A了,不过就是暴力罢了。
1702 0