P1528 四个点超时 求改
  • 板块学术版
  • 楼主54zyd
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/10/12 21:38
  • 上次更新2024/10/13 00:04:08
查看原帖
P1528 四个点超时 求改
1353816
54zyd楼主2024/10/12 21:38
#include<bits/stdc++.h>
using namespace std;
int n,m,s[9999],l,p;
struct asdf{
	int a[999];
}q;
void qw(asdf f,int d,int g){
	if(d>m){
		l=m;
		p=1;
		return;
	}
	
	for(int i=1;i<=n;i++){
		if(f.a[i]-s[d]>=0){
			f.a[i]-=s[d];
			qw(f,d+1,g+1);
			if(p){
				return;
			}
			f.a[i]+=s[d];
		}
	}
	l=max(l,g);
}
int main(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		scanf("%d",&q.a[i]);
	}
	scanf("%d",&m);
	sort(q.a+1,q.a+n+1);
	int i=0;
	while(i<m){
		int x;
		scanf("%d",&x);
		if(x<=q.a[n]){
			s[++i]=x;
		}
		else{
			m--;
		}
	}
	
	sort(s+1,s+m+1);
	qw(q,1,0);
	printf("%d",l);
	return 0;
}
2024/10/12 21:38
加载中...