A
找到约束的范围,就是k能取的最小值和最大值。这时候符合条件的数有Rmin - Lmax + 1个。还有第三个约束条件,将不能取的数记录下来,遍历一遍。记录在Rmin 到 Lmax 的个数 s ,答案就是Rmin - Lmax + 1 - s
const int N = 200005;
int n;
int q[N];
int ide;
void f()
{
cin >> n;
ide = 0;
int l = 0;
int r = 1e9+1;
for (int i = 1; i <= n; i++)
{
int x, y;
cin >> x >> y;
if (x == 1)
{
l = max(y, l);
}
else if (x == 2)
{
r = min(r, y);
}
else
{
q[ide] = y;
ide++;
}
}
if (l > r)
{
cout << 0 << endl;
return;
}
sort(q, q + ide);
int s = 0;
for (int i = 0; i < ide; i++)
{
if (q[i] >= l && q[i] <= r)s++;
}
cout << (r - l + 1 - s) << endl;
}
B
可以知道的是,经过Alice操作后,除非一个不剩,否者Bob一