社区讨论

40pts求调

B3662[语言月赛202209] 山峰参与者 2已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@m1wamt1q
此快照首次捕获于
2024/10/05 23:12
去年
此快照最后确认于
2025/11/04 17:55
4 个月前
查看原帖
《一顿操作猛如虎,听取WA声一片》
不知道为什么那么神金写一堆参数,超爆解法40分求调(巨离谱)

代码:

CPP
#include <bits/stdc++.h>
using namespace std;
const int H=1e5+10;
long long n,m,a[1010][1010],t,b[H],c[H],d[H],e[H],ans,shan1[H],shan2[H];
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cin>>a[i][j];
		}
	}
	cin>>t;
	for(int i=1;i<=t;i++) cin>>b[i]>>c[i]>>d[i]>>e[i];
    if(t){
    	for(int i=1;i<=t;i++) swap(a[b[i]][c[i]],a[d[i]][e[i]]);
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			if(j==1&&i==1&&a[i+1][j]<a[i][j]&&a[i][j+1]<a[i][j]) {shan1[++ans]=i;shan2[ans]=j;}
			else if(j==m&&i==1&&a[i+1][j]<a[i][j]&&a[i][j-1]<a[i][j]) {shan1[++ans]=i;shan2[ans]=j;}
			else if(j==m&&i==n&&a[i-1][j]<a[i][j]&&a[i][j-1]<a[i][j]) {shan1[++ans]=i;shan2[ans]=j;}
			else if(j==1&&i==n&&a[i-1][j]<a[i][j]&&a[i][j+1]<a[i][j]) {shan1[++ans]=i;shan2[ans]=j;}
			else if(i==1&&a[i+1][j]<a[i][j]&&a[i][j-1]<a[i][j]&&a[i][j+1]<a[i][j]) {shan1[++ans]=i;shan2[ans]=j;}
			else if(i==n&&a[i-1][j]<a[i][j]&&a[i][j-1]<a[i][j]&&a[i][j+1]<a[i][j]) {shan1[++ans]=i;shan2[ans]=j;}
			else if(j==1&&a[i+1][j]<a[i][j]&&a[i-1][j]<a[i][j]&&a[i][j+1]<a[i][j]) {shan1[++ans]=i;shan2[ans]=j;}
			else if(j==m&&a[i+1][j]<a[i][j]&&a[i-1][j]<a[i][j]&&a[i][j-1]<a[i][j]) {shan1[++ans]=i;shan2[ans]=j;}
			else if(a[i+1][j]<a[i][j]&&a[i-1][j]<a[i][j]&&a[i][j-1]<a[i][j]&&a[i][j+1]<a[i][j]) {shan1[++ans]=i;shan2[ans]=j;}
	    }
	}
	cout<<ans<<endl;
	for(int i=1;i<=ans;i++) cout<<shan1[i]<<" "<<shan2[i]<<endl;
	return 0;	
}

回复

2 条回复,欢迎继续交流。

正在加载回复...