题解 CF1011A 【Stages】 Posted on 2020-09-14 | 思路:先对字符串排序,然后从头到尾枚举,如果相邻元素差大于 $1$ 则记录,否则跳过,当满足要求的元素够 $k$ 个时输出 $k$ ,如果不够则输出 $-1$ 。 code: 1234567891011121314151617181920212223242526272829303132#include#define fol(i,a,b) for(int i=a;i<=(b);i++)#define bor(i,a,b) for(int i=a;i>=(b);--i)using namespace std;int main(){ int n,k; ios::sync_with_stdio(false); cin.tie(0); string str; cin>>n>>k>>str; sort(str.begin(),str.end()); int sum=str[0]-'a'+1; char tmp=str[0]; int num=1; fol(i,1,n-1){ if(num==k){ break; } if(str[i]-tmp>1){ num++; tmp=str[i]; sum+=tmp-'a'+1; } } if(num==k){ cout<endl; } else{ cout<<-1<<endl; } return 0;} Post author: yuygfgg Post link: https://yuygfgg.ml/2020/09/14/solution-cf1011a/ Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 3.0 unless stating additionally.