60分枚举大法,后几个点RE求大佬
查看原帖
60分枚举大法,后几个点RE求大佬
800773
i_ak_ioi_every_year楼主2022/11/15 07:50
#include<stdio.h>
#include<cstring>
#include<iostream>
#include <climits>
using namespace std;
signed long long n,m,q,temp1[100005],temp2[100005],matrix[5000][5000],l1,r1,l2,r2,ans=-LLONG_MAX;

//<summary>
//快速读取 
//</summary> 
inline int red() {
	signed long long as = 0; signed long long fl = 1; char ch = getchar();
	while(!isdigit(ch)) {if(ch == '-') fl = -1; ch = getchar();}
	while(isdigit(ch)) {as = as * 10 + ch - '0'; ch = getchar();}
	return as * fl;
}
//<summary>
//地图特殊点赋值 
//</summary> 
inline void init(){
	for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++)matrix[i][j]=temp1[i]*temp2[j];
    }
}

//<summary>
//遍历Matrix地图
//</summary> 
inline void slove(){
	for(int a=1;a<=q;a++){
        l1=red(),r1=red(),l2=red(),r2=red();
        ans=-LLONG_MAX;
        for(int i=l1;i<=r1;i++){
            signed long long temp=LLONG_MAX;
            for(int j=l2;j<=r2;j++){
                temp=min(matrix[i][j],temp);
            }
            ans=max(ans,temp);
        }
        printf("%lld\n",ans);
    }
}

//<summary>
//初始化函数 
//</summary> 
signed int main(){
//    freopen("game.in","r",stdin);
//    freopen("game.out","w",stdout);
    n=red(),m=red(),q=red();
    for(int i=1;i<=n;i++){
    	temp1[i]=red();
    }
    for(int i=1;i<=m;i++){
    	temp2[i]=red();
    }
    init();
    slove();
    return 0;
}

这点小代码竟然拿了60分的高分,没有任何分类讨论 但是后面几个点全部RE,不清楚是为什么

2022/11/15 07:50
加载中...