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;
} 
posted @ 2026-03-03 01:43  peter_shen  阅读(8)  评论(0)    收藏  举报