Codeforces Round 920 (Div. 3) B题 为了能直接 cin>>a+1 用的G++17而不是G++20 开全局数组可以AC,如下:
#include<iostream>
using namespace std;
const int N = 200010;
char a[N], b[N];
int main() {
int t;
cin >> t;
while (t--) {
int lens;
cin >> lens;
cin >> a+1;
cin >> b+1;
int sum0=0, sum1 = 0;
for (int i = 1; i <= lens; i++) {
if (a[i] != b[i]) {
if (a[i] == '0')sum0++;
else sum1++;
}
}
cout << sum0+sum1-min(sum0,sum1) << endl;
}
}
但如果按下面这么new,只能过点一卡在了点二,答案错误。
#include<iostream>
using namespace std;
int main() {
int t;
cin >> t;
while (t--) {
int lens;
cin >> lens;
char* a = new char[lens + 1];
char* b = new char[lens + 1];
cin >> a+1;
cin >> b+1;
int sum0=0, sum1 = 0;
for (int i = 1; i <= lens; i++) {
if (a[i] != b[i]) {
if (a[i] == '0')sum0++;
else sum1++;
}
}
cout << sum0+sum1-min(sum0,sum1) << endl;
}
}
还想问个问题,不能这样delete吗?也是卡在点二,但是从答案错误变成了超时。
#include<iostream>
using namespace std;
int main() {
int t;
cin >> t;
while (t--) {
int lens;
cin >> lens;
char* a = new char[lens + 1];
char* b = new char[lens + 1];
cin >> a+1;
cin >> b+1;
int sum0=0, sum1 = 0;
for (int i = 1; i <= lens; i++) {
if (a[i] != b[i]) {
if (a[i] == '0')sum0++;
else sum1++;
}
}
cout << sum0+sum1-min(sum0,sum1) << endl;
delete[]a;
delete[]b;
}
}
查不到,我也想不明白 可能描述不清望海涵