水题,按要求玩就行
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <queue>
#include <cstring>
#include <vector>
using namespace std;
#define maxn 100005
int N, M, Q;
int student[maxn], place[maxn];
int main()
{
//freopen("input.txt", "r", stdin);
scanf("%d%d%d", &N, &M, &Q);
int A, B;
for (int i = 1; i <= N; ++i)
{
scanf("%d", &B);
student[i] = B;
place[B]++;
}
int sum = 0;
for (int i = 1; i <= M; ++i)
{
if (place[i] == 0)
++sum;
}
while (Q--)
{
scanf("%d%d", &A, &B);
place[student[A]]--;
if (place[student[A]] == 0)
{
++sum;
}
student[A] = B;
place[B]++;
if (place[B] == 1)
{
--sum;
}
printf("%d\n", sum);
}
//system("pause");
//while (1);
return 0;
}

本文提供了一道ACM竞赛风格的模拟题解决方案,通过使用C++实现,演示了如何处理学生分配到不同位置的问题,并实时更新空闲位置的数量。代码中包含了输入输出操作、数组处理及条件判断等基本编程技巧。
3754

被折叠的 条评论
为什么被折叠?



