各位大佬,还能在再速吗?
  • 板块P2363 马农
  • 楼主Hisy
  • 当前回复4
  • 已保存回复6
  • 发布时间2024/1/7 16:09
  • 上次更新2024/1/7 18:31:17
查看原帖
各位大佬,还能在再速吗?
922691
Hisy楼主2024/1/7 16:09
#include<cstdio>
#include<map>
int diff[2002][2002];
inline int scan(void){
	int minus=1;
	int number=0;
	char got=getchar();
	while('9'<got||got<'0'){
		if(got=='-'){
			minus=-1;
		};
		got=getchar();
	};
	while('0'<=got&&got<='9'){
		number=number*10+got-'0';
		got=getchar();
	};
	return number*minus;
};
inline void print(int answer){
	if(answer<0){
		putchar('-');
		answer=-answer;
	};
	if(answer>9){
		print(answer/10);
	};
	putchar(answer%10+'0');
};
int main(int argc,char **argv){
	std::map<int,int> hash;
	int maxn=scan(),ans=0;
    for(int row=1;row<=maxn;row++){
        for(int col=1;col<=maxn;col++){
        	int worth=scan();
            diff[row][col]=diff[row-1][col]+diff[row][col-1]-diff[row-1][col-1]+worth;
        }
    }
    for(int row=1;row<=maxn;row++){
        for(int col=1;col<=maxn;col++){
            for(int rowit=1;rowit<=row;rowit++){
				for(int colit=1;colit<=col;colit++){
					hash[diff[row][col]-diff[row][colit-1]-diff[rowit-1][col]+diff[rowit-1][colit-1]]++;
				};
			};
            for(int rowit=row+1;rowit<=maxn;rowit++){
				for(int colit=col+1;colit<=maxn;colit++){
					ans=ans+hash[diff[rowit][colit]-diff[rowit][col]-diff[row][colit]+diff[row][col]];
				};
			};
            for(int rowit=1;rowit<=row;rowit++){
				for(int colit=1;colit<=col;colit++){
					hash[diff[row][col]-diff[row][colit-1]-diff[rowit-1][col]+diff[rowit-1][colit-1]]=0;
				};
			};
            for(int rowit=1;rowit<=row;rowit++){
				for(int colit=col+1;colit<=maxn;colit++){
					hash[diff[row][colit]-diff[rowit-1][colit]-diff[row][col]+diff[rowit-1][col]]++;
				};
			};
            for(int rowit=row+1;rowit<=maxn;rowit++){
				for(int colit=1;colit<=col;colit++){
					ans=ans+=hash[diff[rowit][col]-diff[row][col]-diff[rowit][colit-1]+diff[row][colit-1]];
				};
			};
            for(int rowit=1;rowit<=row;rowit++){
				for(int colit=col+1;colit<=maxn;colit++){
					hash[diff[row][colit]-diff[rowit-1][colit]-diff[row][col]+diff[rowit-1][col]]=0;
				};
			};
        };
    };
    print(ans);
    return 0;
};

就一个TLE了,还能再加速吗?

2024/1/7 16:09
加载中...