社区讨论

求调

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 条回复,欢迎继续交流。

正在加载回复...