社区讨论

求助,95ppt,第九个点WA!

P7913[CSP-S 2021] 廊桥分配参与者 3已保存回复 4

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
4 条
当前快照
1 份
快照标识符
@lo7tjj38
此快照首次捕获于
2023/10/27 07:31
2 年前
此快照最后确认于
2023/10/27 07:31
2 年前
查看原帖
CPP
#include <bits/stdc++.h>
using namespace std;
#define F(i,a,b) for(int i=a;i<=b;++i)
#define N 100010
int n,m[2],cnt[2][N];
struct node
{
	int x,y;
	bool friend operator<(node p,node q) {return p.x<q.x;}
	bool friend operator>(node p,node q) {return q<p;}
}a[2][N];
priority_queue<int,vector<int>,greater<int> > q1;
priority_queue<node,vector<node>,greater<node> > q2;
void solve(int t)
{
	while(q1.size()) q1.pop();
	while(q2.size()) q2.pop();	
	F(i,1,m[t]) q1.push(i);
	F(i,1,m[t]) scanf("%d%d",&a[t][i].x,&a[t][i].y);
	sort(&a[t][1],&a[t][m[t]+1]);
	F(i,1,m[t])
	{
		while(q2.size()&&q2.top().x<a[t][i].x) 
		{
			q1.push(q2.top().y);
			q2.pop();	
		}			
		q2.push((node){a[t][i].y,q1.top()});
		++cnt[t][q1.top()];
		q1.pop();
	}
	F(i,1,m[t]) cnt[t][i]+=cnt[t][i-1]; 
} 
int main()
{
	scanf("%d%d%d",&n,&m[0],&m[1]);
	int ans = 0;
	solve(0);
	solve(1);
	F(i,0,n) ans=max(ans,cnt[0][i]+cnt[1][n-i]);
	printf("%d",ans);
	return 0;
}

回复

4 条回复,欢迎继续交流。

正在加载回复...