首先,不用快读和getchar,即可ac:
#include <bits/stdc++.h>
using namespace std;
#define srand srand(time(NULL))
#define random(x) rand() % (x)
#define il inline
#define ptc putchar
#define reg register
#define mp make_pair
typedef __int128 LL;
typedef long long ll;
typedef pair<int, int> PII;
namespace cyyh {
template <typename T>
il void read(T &x) {
x = 0; T f = 1; char ch;
while (!isdigit(ch = getchar())) f -= (ch == '-') << 1;
while (isdigit(ch)) x = (x << 1) + (x << 3) + (ch & 15), ch = getchar(); x *= f;
}
template <typename T>
il void write(T x) {
if (x < 0) ptc('-'), x = -x;
if (x > 9) write(x / 10);
ptc(x % 10 + '0');
}
template <typename T>
il T lowbit(const T &x) {
return x & -x;
}
}
using namespace cyyh;
const int N = 5e4 + 5;
int n, T, tot, root, X, Y, Z;
stack <int> last;
...
bool vis[N];
signed main() {
// freopen("1.txt", "w", stdout);
srand;
scanf("%d%d", &n, &T);
insert(0), insert(n + 1);
while (T--) {
int x;
char op;
cin >> op;
// cout << op << ' ' << x << endl;
if (op == 'D') {
scanf("%d", &x);
insert(x), vis[x] = 1, last.push(x);
} else if (op == 'R') {
if (!last.empty()) erase(last.top()), vis[last.top()] = 0, last.pop();
} else {
scanf("%d", &x);
if (vis[x]) {
write(0), ptc('\n');
continue;
}
int l = getpre(x), r = getnxt(x);
// cout << r << ' ' << l << "!!" << endl;
write(r - l - 1), ptc('\n');
}
}
return 0;
}
将cin的op换成getchar,处理了一下空格:
signed main() {
// freopen("1.txt", "w", stdout);
srand;
scanf("%d%d", &n, &T);
insert(0), insert(n + 1);
while (T--) {
getchar();
int x;
char op = getchar();
// cout << op << ' ' << x << endl;
if (op == 'D') {
scanf("%d", &x);
insert(x), vis[x] = 1, last.push(x);
} else if (op == 'R') {
if (!last.empty()) erase(last.top()), vis[last.top()] = 0, last.pop();
} else {
scanf("%d", &x);
if (vis[x]) {
write(0), ptc('\n');
continue;
}
int l = getpre(x), r = getnxt(x);
// cout << r << ' ' << l << "!!" << endl;
write(r - l - 1), ptc('\n');
}
}
return 0;
}
能过样例,全re 0pts
然后把scanf换成快读,1ac,9tle
signed main() {
// freopen("1.txt", "w", stdout);
srand;
read(n), read(T);
insert(0), insert(n + 1);
while (T--) {
int x;
char op = getchar();
// cout << op << ' ' << x << endl;
if (op == 'D') {
getchar();
read(x);
insert(x), vis[x] = 1, last.push(x);
} else if (op == 'R') {
erase(last.top()), vis[last.top()] = 0, last.pop();
} else {
getchar();
read(x);
if (vis[x]) {
write(0), ptc('\n');
continue;
}
int l = getpre(x), r = getnxt(x);
// cout << r << ' ' << l << "!!" << endl;
write(r - l - 1), ptc('\n');
}
}
return 0;
}
都试了一下,都能正常读入啊,为什么呢。
现在都不敢在考场上写getchar和快读了