冯诚阳 • 6天前
#include <cstdio>
#include <cstring>
int cnt[100001];
int main() {
int N, M;
scanf("%d %d", &N, &M);
// 读入N个高度
int height;
for (int i = 0; i < N; ++i) {
scanf("%d", &height);
cnt[height]++;
}
// 处理M个查询
for (int i = 0; i < M; ++i) {
int k;
scanf("%d", &k);
printf("%d", cnt[k]);
if (i < M - 1) {
printf(" ");
}
}
return 0;
}
评论:
#include <cstdio>
#include <vector>
using namespace std;
int main() {
int N, M;
scanf("%d %d", &N, &M);
vector<int> cnt(100001, 0);
int height;
for (int i = 0; i < N; ++i) {
scanf("%d", &height);
if (height <= 100000) {
cnt[height]++;
}
}
for (int i = 0; i < M; ++i) {
int k;
scanf("%d", &k);
if (k <= 100000) {
printf("%d", cnt[k]);
} else {
printf("0");
}
if (i < M - 1) {
printf(" ");
}
}
return 0;
}
-------------------- Segmentation fault. #0 0x00000000004010c1 in main () at foo.cc:14 14 cnt[height]++; -------------------- Segmentation fault. #0 0x00000000004010c1 in main () at foo.cc:14 14 cnt[height]++;
-------------------- Segmentation fault. #0 main () at /nix/store/qs54xir5n4vhhbi22aydbkvyyq4v8p0l-gcc-14.2.1.20250322/include/c++/14.2.1.20250322/bits/stl_vector.h:1128 1128 operator[](size_type __n) _GLIBCXX_NOEXCEPT -------------------- Segmentation fault. #0 main () at /nix/store/qs54xir5n4vhhbi22aydbkvyyq4v8p0l-gcc-14.2.1.20250322/include/c++/14.2.1.20250322/bits/stl_vector.h:1128 1128 operator[](size_type __n) _GLIBCXX_NOEXCEPT
#include <cstdio>
#include <map>
using namespace std;
int main() {
int N, M;
scanf("%d %d", &N, &M);
map<int, int> cnt; // 用 map 存储高度 -> 数量
// 读入N个高度
for (int i = 0; i < N; ++i) {
int height;
scanf("%d", &height);
cnt[height]++; // map 自动处理任意大的高度
}
// 处理M个查询
for (int i = 0; i < M; ++i) {
int k;
scanf("%d", &k);
auto it = cnt.find(k);
if (it != cnt.end()) {
printf("%d", it->second);
} else {
printf("0");
}
if (i < M - 1) {
printf(" ");
}
}
return 0;
}
#include <cstdio>
#include <map>
using namespace std;
int main() {
int N, M;
scanf("%d %d", &N, &M);
map<int, int> cnt;
int height;
for (int i = 0; i < N; ++i) {
scanf("%d", &height);
cnt[height]++;
}
for (int i = 0; i < M; ++i) {
int k;
scanf("%d", &k);
auto it = cnt.find(k);
if (it != cnt.end()) {
printf("%d", it->second);
} else {
printf("0");
}
if (i < M - 1) {
printf(" ");
}
}
return 0;
}
#include <cstdio>
#include <map>
using namespace std;
int main() {
int N, M;
scanf("%d %d", &N, &M);
map<int, int> cnt;
// 读入N个高度
for (int i = 0; i < N; ++i) {
int height;
scanf("%d", &height);
cnt[height]++;
}
// 处理M个查询
int first = 1;
for (int i = 0; i < M; ++i) {
int k;
scanf("%d", &k);
if (!first) {
printf(" ");
}
first = 0;
printf("%d", cnt[k]); // map直接访问,不存在就返回0
}
return 0;
}
#include <cstdio>
#include <map>
using namespace std;
int main() {
int N, M;
scanf("%d %d", &N, &M);
map<long long, int> cnt; // 用long long更安全
// 读入N个高度
for (int i = 0; i < N; ++i) {
long long height;
scanf("%lld", &height); // 用%lld读long long
cnt[height]++;
}
// 处理M个查询
for (int i = 0; i < M; ++i) {
long long k;
scanf("%lld", &k);
printf("%d", cnt[k]); // map直接访问
if (i < M - 1) {
printf(" ");
}
}
return 0;
}