Codeforces Round #788 (Div. 2)

A - Prof. Slim

遇到的问题:

一开始读错题,到后面思路打不开,最后想了好久才知道怎么做。总感觉思维差很多,其实这种题还是很好想到的,我为什么想的那么慢?我认为应该是要好好反思一下自己,要注意哪方面的问题了。

代码:

#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];
void solve() {
	int n;
	cin >> n;
	int cnt = 0;
	for(int i = 0; i < n; i++) {
		cin >> a[i];
		if(a[i] < 0) cnt++;
	}
//	cout << cnt << endl;
	for(int i = 0; i < n; i++) {
		if(a[i] > 0 && cnt) {
			a[i] = -a[i];
			cnt--;
		}else if(a[i] < 0 && cnt) cnt--;
		else if(cnt == 0 && a[i] < 0) a[i] = -a[i];
	}
//	for(int i = 0; i < n; i++) cout << a[i] << ' ';
//	cout << endl;
	bool flag = true;
	for(int i = 0; i < n; i++) {
		if(a[i] < a[i-1] && i) {
			flag = false;
			break;
		}
	}
	if(flag) cout << "YES" << endl;
	else cout << "NO" << endl;
}
 
signed main() {
	int t;
	cin >> t;
	while(t--) {
		solve();
	}
	return 0;
} 

B - Dorms War

遇到的问题:

怎么说呢,一开始想到怎么做了,但是做的都太复杂了,每次都是最后化简才做出来。以后写题的时候,先想清楚吧,要不然挺浪费时间的。

#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 = 30;
bool st[N];
void solve() {
	string s;
	int k, n;
	cin >> n;
	cin >> s;
	cin >> k;
	memset(st, false, sizeof st);
	for(int i = 0; i < k; i++) {
		char c;
		cin >> c;
		st[c-'a'] = true;
	}
	int ans = 0;
	int pos = 0;
	for(int i = 0; i < n; i++) {
		if(st[s[i] - 'a']) {
			ans = max(ans, i - pos);
			pos = i;
		}
	}
	cout << ans << endl;
}
 
signed main() {
	int t;
	cin >> t;
	while(t--) {
		solve();
	}
	return 0;
} 
posted @ 2022-05-07 10:44  飘向远方丶  阅读(37)  评论(0)    收藏  举报