社区讨论
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 条回复,欢迎继续交流。
正在加载回复...