社区讨论
求调
P7913[CSP-S 2021] 廊桥分配参与者 2已保存回复 4
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 4 条
- 当前快照
- 1 份
- 快照标识符
- @mj9jwoyk
- 此快照首次捕获于
- 2025/12/17 13:08 3 个月前
- 此快照最后确认于
- 2025/12/20 09:10 3 个月前
CPP
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
struct t {
int b, e;
}a[N], b[N];
int n, m1, m2;
int sum1[N], sum2[N];
bool cmp (t c, t d) {return c.b < d.b;}
void h (t* a, int m, int* sum) {
priority_queue<pair<int, int> > d;//等待离开航班
priority_queue<int> k;//空闲廊桥
for (int i = 1; i <= n; i++) k.push (i);
for (int i = 1; i <= m; i++) {
while (!d.empty () && a[i].b >= d.top ().first) {
k.push (d.top ().second);
d.pop ();
}
if (k.empty ()) continue;
int f = k.top ();
k.pop ();
sum[f] ++;
d.push (make_pair (a[i].e, f));
}
for (int i = 1; i <= n; i++) sum[i] += sum[i-1];
return ;
}
int main () {
ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
cin >> n >> m1 >> m2;
for (int i = 1; i <= m1; i++) cin >> a[i].b >> a[i].e;
for (int i = 1; i <= m2; i++) cin >> b[i].b >> b[i].e;
sort (a + 1, a + m1 + 1, cmp);
sort (b + 1, a + m2 + 1, cmp);
h (a, m1, sum1);
h (b, m2, sum2);
int ans = 0;
for (int i = 1; i <= n; i++) ans = max (ans, sum1[i] + sum2[n - i]);
cout << ans;
return 0;
}
回复
共 4 条回复,欢迎继续交流。
正在加载回复...