ABC349

A

link

其实,有人赢比赛,就有人输比赛,一加一减,不管进行多少场比赛,最后所有人的分数和一定是\(0\)
那么知道\(n-1\)个人的分数和,就可以知道第\(n\)个人的了。

点击查看代码
#include<bits/stdc++.h>

using namespace std;

int n;
int sum;
int a[105];

signed main(){
	
	cin >> n;
	for(int i = 1;i < n;++ i)
		cin >> a[i],sum += a[i];
	
	cout << -1*sum;
	
	return 0;
	
}

B

link

存下来每个字母有多少个,字符串中有的字母中是\(i\)个的字母是否为\(0\)\(2\)个。

点击查看代码
#include<bits/stdc++.h>

using namespace std;

char s[105];
int n;
map<char,int> mp;
int f[30];

signed main(){
	
	cin >> s+1;
	n = strlen(s+1);
	
	for(int i = 1;i <= n;++ i)
		f[s[i]-'a'] = 1,mp[s[i]]++;
	
	for(int i = 1;i <= n;++ i){
		int g = 0;
		for(int j = 0;j < 26;++ j){
			if(f[j]){
				if(mp[j+'a'] == i) g++;
			}
		}
		if(g != 0&&g != 2){
			cout << "No";
			return 0;
		}
	}
	
	cout << "Yes";
	
	return 0;
	
}

C

link

顺着找。
先找到第一个\(t_1\),再在这个位置往后找第一个\(t_2\),然后在\(t_2\)的位置往后找\(t_3\)
不管从那个位置开始找不到了,都不行。
但是如果找不到\(t_3\),如果\(t_3\)\(X\),就可以不找到。

点击查看代码
#include<bits/stdc++.h>

#define int long long

using namespace std;

char s[100005];
char t[5];
int sl,tl;

signed main(){
	
	cin >> s+1 >> t;
	sl = strlen(s+1);
	
	int w = 0;
	for(int i = 1;i <= sl;++ i){
		if(s[i] == t[0]-'A'+'a'){
			w = i;
			break;
		}
	}
	
	if(w == 0){
		cout << "No";
		return 0;
	}
	
	int ww = 0;
	for(int i = w+1;i <= sl;++ i){
		if(s[i] == t[1]-'A'+'a'){
			ww = i;
			break;
		}
	}
	
	if(ww == 0){
		cout << "No";
		return 0;
	}
	
	int w3 = 0;
	for(int i = ww+1;i <= sl;++ i){
		if(s[i] == t[2]-'A'+'a'){
			w3 = i;
			break;
		}
	}
	
	if(w3 == 0&&t[2] != 'X'){
		cout << "No";
		return 0;
	}
	
	cout << "Yes";
	
	return 0;
	
} 
posted @ 2024-04-14 10:08  学贵坚持  阅读(54)  评论(0编辑  收藏  举报