ABC349

学贵坚持發表於2024-04-14

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;
	
}