25pts求调
查看原帖
25pts求调
986112
welt233楼主2023/10/7 23:02

感觉思路没问题,但是下的#1数据过不了。拜托各位大佬!
AC:2,4,9,15,16,21

#include <bits/stdc++.h>
using namespace std;
const int MAX=100001;
int n,m1,m2;
int ans1[MAX+5],ans2[MAX+5];//ans1为国内廊桥 ,ans2为国际廊桥
int as1[MAX+5],as2[MAX+5];//as1为廊桥的飞机数,as2为廊桥的飞机数
int a1[MAX+5],a2[MAX+5],b1[MAX+5],b2[MAX+5];
int ans = -1;
int main(){
	cin>>n>>m1>>m2;
	for (int i=1;i<=m1;i++) {
		cin>>a1[i]>>b1[i];
	}
	for (int i=1;i<=m2;i++) {
		cin>>a2[i]>>b2[i];
	}
	sort(a1+1,a1+1+m1);
	sort(a2+1,a2+1+m2);
	for (int i=1;i<=m1;i++) {
		for (int j=1;j<=n;j++) {
			if (a1[i]>ans1[j]) {
				ans1[j]=b1[i];
				as1[j]++;
				break;
			}
		}
	}
	for (int i=1;i<=m2;i++) {
		for (int j=1;j<=n;j++) {
			if (a2[i]>ans2[j]) {
				ans2[j]=b2[i];
				as2[j]++;
				break;
			}
		}
	}
	for (int i=1;i<=n;i++) {
		as1[i]+=as1[i-1];
		cout<<as2[i]<<" ";//as2[1],as2[2]
		as2[i]+=as2[i-1];
		
	}
	for (int i=0;i<=n;i++) {
		ans=max(ans,as1[i]+as2[n-i]);
	}
	cout<<ans;
	return 0;
}
2023/10/7 23:02
加载中...