Codeforces Round #786 (Div. 3)A-E

A - Number Transformation

代码:

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define x first
#define y second
typedef pair<int,int>PII;
const int N = 2e5 + 10; 
 
void solve() {
	int x, y;
	cin >> x >> y;
	if(y % x) {
		cout << 0 << ' ' << 0 << endl;
	} else {
		int t = y / x;
		for(int i = 1; ; i++) {
			int cnt = 0;
			int tt = 1;
			int k = 50;
			while(k) {
				tt *= i;
				cnt++;
				if(tt == t) {
					cout << cnt << ' ' << i << endl;
					return;
				}
				k--;
			}
		}
	}
}
signed main() {
	int t;
	cin >> t;
	while(t--) {
		solve();
	}
	return 0;
} 

B - Dictionary

代码:

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define x first
#define y second
typedef pair<int,int>PII;
const int N = 2e5 + 10; 
int q[26][26];
 
void solve() {
	char a, b;
	cin >> a >> b;
	cout << q[a - 'a'][b - 'a'] << endl;
}
signed main() {
	int t;
	cin >> t;
	int k = 1;
	for(int i = 0; i < 26; i++) {
		for(int j = 0; j < 26; j++) {
			if(i == j) continue;
			q[i][j] = k++;
		}
	}
	while(t--) {
		solve();
	}
	return 0;
} 

C - Infinite Replacement

代码:

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define x first
#define y second
typedef pair<int,int>PII;
const int N = 2e5 + 10; 
 
void solve() {
	string s, t;
	cin >> s >> t;
	int f = 0;
	for(int i = 0; i < t.size(); i++) {
		if(t[i] == 'a') f = 1;
	}
	if(t.size() > 1) {
		if(f) {
			cout << -1 << endl;
			return;
		}
	}
	int len = s.size();
	if(!f) {
		int x = pow(2, len);
		cout << x << endl;
	}else {
		cout << 1 << endl;
	}
}
signed main() {
	int t;
	cin >> t;
	while(t--) {
		solve();
	}
	return 0;
} 

D - A-B-C Sort

代码:

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define x first
#define y second
typedef pair<int,int>PII;
const int N = 2e5 + 10; 
int a[N];
int b1[N];
int b2[N];
 
void solve() {
	int n;
	cin >> n;
	for(int i = 1; i <= n; i++) cin >> a[i];
	for(int i = n; i > 1; i -= 2) {
		if(a[i] < a[i - 1]) swap(a[i], a[i-1]);
	}
	bool flag = false;
	if(is_sorted(a+1, a+1+n)) flag = true;
	if(flag) puts("YES");
	else puts("NO");
}
signed main() {
	int t;
	cin >> t;
	while(t--) {
		solve();
	}
	return 0;
} 

E. Breaking the Wall

代码:

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define x first
#define y second
typedef pair<int,int>PII;
const int N = 2e5 + 10; 
int w[N];
int t[N];

void solve() {
	int n;
	cin >> n;
	int min1 = 1e7, min2 = 1e7;
	for(int i = 1; i <= n; i++) {
		cin >> w[i];
		t[i] = w[i];
	}
	sort(t + 1, t + 1 + n);
	min1 = t[1], min2 = t[2];
	int ans = (min1 + 1 >> 1) + (min2 + 1 >> 1);
	// 相邻
	for(int i = 1; i + 1 <= n; i++) {
		int t1 = w[i], t2 = w[i+1];
		if(t1 < t2) swap(t1, t2);
		if(t1 >= 2 * t2) ans = min(ans, t1 + 1 >> 1);
		else ans = min(ans, (t1 + t2 + 2) / 3);
	} 
	// 相隔
	for(int i = 1; i + 2 <= n; i++) {
		ans = min(ans, min(w[i], w[i + 2]) + (abs(w[i] - w[i + 2])  + 1 >>  1));
	} 
	cout << ans << endl;
}
signed main() {
	solve();
	return 0;
} 
posted @ 2022-05-03 11:09  飘向远方丶  阅读(20)  评论(0)    收藏  举报