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

浙公网安备 33010602011771号