1208: 选球问题
注意 是大于等于2,一开始是scanf("%c",&zimu);这导致我会吃回车符给zimu
使用getchar()吃字符会出错50%
#include <bits/stdc++.h>
using namespace std;
priority_queue<int,vector<int>,greater<int>> que;
int main(){
int n,k;
while(scanf("%d%d",&n,&k)!=EOF){
while(!que.empty())
que.pop();
//getchar();
for(int i=1;i<=n;i++){
char temp;
scanf(" %c",&temp);
que.push(temp-'a'+1);
cout<<temp;
}
int sum=0;
int j=-1;
int cnt=0;
while(cnt!=k&&!que.empty()){
int now=que.top();
que.pop();
if(now>=j+2){
cnt++;
j=now;
sum+=j;
}
}
if(cnt==k)
printf("%d\n",sum);
else
printf("-1\n");
}
return 0;
}
#include <bits/stdc++.h>
using namespace std;
int vis[28];
int n,k;
int main(){
while(scanf("%d%d",&n,&k)!=EOF){
int now=0;
memset(vis,0,sizeof(vis));
for(int i=1;i<=n;i++){
char zimu;
scanf(" %c",&zimu);
vis[zimu-'a'+1]=1;
}
int turn=0;
int sum=0;
int last=-2;
for(int i=1; i<=26 && turn<k; i++){
if(i-last>=2&&vis[i]){
sum+=i;
turn++;
last =i;
}
}
if(turn == k)
printf("%d\n",sum);
else printf("-1\n");
}
return 0;
}

浙公网安备 33010602011771号