关于CSP-ST2
  • 板块灌水区
  • 楼主G_E_E_D
  • 当前回复7
  • 已保存回复7
  • 发布时间2022/10/30 18:31
  • 上次更新2023/10/27 04:49:39
查看原帖
关于CSP-ST2
352871
G_E_E_D楼主2022/10/30 18:31

T2在洛谷自测为60pts,但计蒜客上只有25pts,我改按哪个为准

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
const long long maxn=-1e18;
long long a[110000],b[110000];
long long cs[1100][1100];
long long mymin(int l,int r,int n){
	long long ans=-maxn;
	if(n==1){
	for(int i=l;i<=r;i++){
        ans=min(ans,a[i]);		
	}
}
    else{
    	for(int i=l;i<=r;i++){
    		ans=min(ans,b[i]);
		}
	}
	return ans;
}
long long mymax(int l,int r,int n){
	long long ans=maxn;
	if(n==1){
	for(int i=l;i<=r;i++){
        ans=max(ans,a[i]);		
	}
}
    else{
    	for(int i=l;i<=r;i++){
    		ans=max(ans,b[i]);
		}
	}
	return ans;
}
void dfs(int l1,int r1,int l2,int r2){
	long long n1=mymin(l1,r1,1),m1=mymax(l1,r1,1);
	long long n2=mymin(l2,r2,2),m2=mymax(l2,r2,2);
	if(n2>=0){
		cout<<n2*m1<<endl;
		return;
	} 
	else{
		if(m2<=0){
			if(m1<=0){
				cout<<m1*m2<<endl;
				return;
			}
			if(n1>=0){
				cout<<n1*n2<<endl;
				return;
			}
			cout<<n1*m2<<endl;
		    return;
		}
		long long cot=maxn;
		for(int i=l1;i<=r1;i++){
			long long amn=-maxn;
			for(int j=l2;j<=r2;j++){
				amn=min(amn,a[i]*b[j]);
			}
			cot=max(cot,amn);
		}
		cout<<cot<<endl;
		return;
	}
}
void init(int n,int m){
	for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++){
				cs[i][j]=a[i]*b[j];
			}
		}
}
int main(){
    freopen("game.in","r",stdin);
	freopen("game.out","w",stdout);
	int n,m,q;
	cin>>n>>m>>q;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	for(int i=1;i<=m;i++){
		cin>>b[i];
	}
	if(n<=1000&&m<=1000)
	init(n,m);
	for(int i=1;i<=q;i++){
		int l1,r1,l2,r2;
		cin>>l1>>r1>>l2>>r2;
		dfs(l1,r1,l2,r2);
	}
	return 0;
} 

代码如上,提前感谢各位神犇解惑

2022/10/30 18:31
加载中...