看不太懂……
能解释一下吗?
我用的桶排序……
by 天野星河 @ 2022-11-20 16:14:01
@[天野星河](/user/564941)
这题值域只有几千,桶排序能过。
你这个代码我真的没看懂……
```cpp
#include<bits/stdc++.h>
using namespace std;
int m, n, k, l, d;
int x[1005], y[1005];
int p[1005], q[1005];
int main() {
scanf("%d%d%d%d%d", &m, &n, &k, &l, &d);
for (int i = 1; i <= d; i++) {
int xi, yi, pi, qi;
scanf("%d%d%d%d", &xi, &yi, &pi, &qi);
if (xi == pi) {
x[min(yi, qi)]++;
} else {
y[min(xi, pi)]++;
}
}
for (int i = 1; i <= k; i++) {
int maxn = -1;
int e;
for (int j = 1; j < m; j++) {
if (y[j] > maxn) {
maxn = y[j];
e = j;
}
}
y[e] = 0;
p[e]++;
}
for (int i = 1; i <= l; i++) {
int maxn = -1;
int e;
for (int j = 1; j < n; j++) {
if (x[j] > maxn) {
maxn = x[j];
e = j;
}
}
x[e] = 0;
q[e]++;
}
for (int i = 0; i < 1005; i++) {
if (p[i]) {
printf("%d ", i);
}
}
printf("\n");
for (int i = 0; i < 1005; i++) {
if (q[i]) {
printf("%d ", i);
}
}
}
```
by 天野星河 @ 2022-11-20 16:16:22
@[天野星河](/user/564941) 前面的差不多,后面我是用结构体排序,cnt表示线段数量,person表示能隔开的人的统计
by lwx20211103 @ 2022-11-20 21:01:19
输出和排序的问题
```cpp
#include<bits/stdc++.h>
using namespace std;
struct stu
{
int person, cnt;
};
stu a[114514], b[114514];
bool compare1(stu x, stu y)
{
return x.person > y.person;
}
bool compare2(stu x, stu y)
{
return x.cnt < y.cnt;
}
int main()
{
int m, n, k, l, d;
int i;
cin >> m >> n >> k >> l >> d;
for (i = 0; i < d; i++)
{
int x1, y1, x2, y2;
cin >> x1 >> y1 >> x2 >> y2;
if (x1 == x2)
{
a[min(y1, y2)].cnt = min(y1, y2);
a[min(y1, y2)].person++;
}
else
{
b[min(x1, x2)].cnt = min(x1, x2);
b[min(x1, x2)].person++;
}
}
sort(a + 1, a + 10000, compare1);
sort(b + 1, b + 10000, compare1);
sort(a + 1, a + l + 1, compare2);
sort(b + 1, b + k + 1, compare2);
for (i = 1; i <= k; i++)
{
cout << b[i].cnt << " ";
}
cout << "\n";
for (i = 1; i <= l; i++)
{
cout << a[i].cnt << " ";
}
return 0;
}
```
这样就好了
by light_searcher @ 2022-11-27 09:09:56