社区讨论

35分求调

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

讨论操作

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

当前回复
0 条
当前快照
1 份
快照标识符
@mhj3m8aq
此快照首次捕获于
2025/11/03 20:10
4 个月前
此快照最后确认于
2025/11/03 20:10
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
int vis[1000001],viss[1000001];
struct point{
	int num,lst;
}c[1000001],d[1000001];
struct node{
	int a,b;
}qq[1000001],q[1000001];
int cmp(node a,node b){
	return a.a<b.a;
}
int cmpp(point a,point b){
	return a.num>b.num;
}
int main(){
	int n,m,p,ans=0;
	cin>>n>>m>>p;
	for(int i=1;i<=m;i++){
		cin>>q[i].a>>q[i].b;
	} 
	for(int i=1;i<=p;i++){
		cin>>qq[i].a>>qq[i].b;
	}
	sort(q+1,q+m+1,cmp);
	sort(qq+1,qq+p+1,cmp);
	int tot=0;
	for(int i=1;i<=m;i++){
		int k=0;
		while(q[i].a<=c[++k].lst){
		}
		if(k>tot){
			tot++;
			c[tot].lst=q[i].b; 
			vis[i]=tot;
		}
		else{
			c[k].lst=q[i].b;
			vis[i]=k;
		}
		c[k].num++;
	}
	int tott=0;
	for(int i=1;i<=p;i++){
		int k=0;
		while(qq[i].a<=d[++k].lst){
		}
		if(k>tott){
			tott++;
			d[tott].lst=qq[i].b; 
			viss[i]=tott;
		}
		else{
			d[k].lst=qq[i].b;
			viss[i]=k;
		}
		d[k].num++;
	}
//	sort(c+1,c+tot+1,cmpp);
//	sort(d+1,d+tott+1,cmpp);
//	cout<<tot<<" "<<tott<<"\n";
//	for(int i=1;i<=tot;i++) cout<<c[i].num<<" ";
//	for(int i=1;i<=tott;i++) cout<<d[i].num<<" ";
	for(int l=1,r=1;l+r-1<=n;){
		if(c[l].num>d[r].num){
			ans+=c[l].num;
			l++;
		}
		else{
			ans+=d[r].num;
			r++;
		}
	}
	cout<<ans;
}
不考虑hack2TLE的情况

回复

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

正在加载回复...