题目传送门
题目意思:
给你一个长度为 n n n 的字符串 a a a,在这个字符串中选一个长度为 k k k 的好串(好串标准是啥自己去题目里看吧),问这个好串的最小价值是多少。
思路:
贪心。
- 首先我们将字符串 a a a 里面的字符进行排序。
- 因为要最小的价值,所以排好序后的 a a a 的第一个字符是肯定要的,将它存进一个新的字符数组 b b b 里面。
- 遍历排好序后的 a a a,按照要求把符合的字符放进 b b b 中,直到 b b b 里面已经有了 k k k 个字符。
- 最后计算价值即可。
代码:文章来源:https://www.toymoban.com/news/detail-658035.html
#include<bits/stdc++.h>
using namespace std;
int k,n;
char a[100];
char b[100];
int cnt=1;
int main()
{
cin>>n>>k;
cin>>a+1;
sort(a+1,a+1+n);
b[cnt]=a[1];
for(int i=2;i<=n;i++)
{
if(cnt==k)break;
int x=b[cnt]-'a';
int y=a[i]-'a'-1;
if(y>x)
b[++cnt]=a[i];
}
if(cnt!=k)
{
cout<<-1;
return 0;
}
int ans=0;
for(int i=1;i<=k;i++)
ans=ans+(b[i]-'a'+1);
cout<<ans;
return 0;
}
完美撒花~文章来源地址https://www.toymoban.com/news/detail-658035.html
到了这里,关于CF1011A Stages 题解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!