包AC
2026-06-26 21:04:15
发布于:浙江
3阅读
0回复
0点赞
很简单!
因为……(你们知道)所以……(你们懂的)
废话少说,上代码!
#include<bits/stdc++.h>
using namespace std;
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
int m,n,h;
cin>>m>>n>>h;
vector<vector<int>>num(m,vector<int>(n));
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
cin>>num[i][j];
}
}
int big=0;
for(int i=0;i<=m-3;i++){
for(int j=0;j<=n-3;j++){
if(max({num[i][j],num[i][j+1],num[i][j+2],num[i+1][j],num[i+1][j+1],num[i+1][j+2],num[i+2][j],num[i+2][j+1],num[i+2][j+2]})-min({num[i][j],num[i][j+1],num[i][j+2],num[i+1][j],num[i+1][j+1],num[i+1][j+2],num[i+2][j],num[i+2][j+1],num[i+2][j+2]})<=h){
big=max(big,num[i][j]+num[i][j+1]+num[i][j+2]+num[i+1][j]+num[i+1][j+1]+num[i+1][j+2]+num[i+2][j]+num[i+2][j+1]+num[i+2][j+2]);
}
}
}
cout<<big<<endl;
}
解释两句话:
- ios::sync_with_stdio(false);
含义
关闭 C++ 的 cin/cout 和 C 语言的 scanf/printf 的同步绑定。
原理
默认情况下,C++ 标准流和 C 标准输入输出流是同步的,目的是混用 cin 和 scanf 时输出顺序不乱。
但同步会带来巨大性能开销,读大量数据(比如 1000×1000 矩阵)会很慢,甚至超时。
关闭同步后,cin / cout 速度大幅提升,接近 scanf/printf。
注意
关闭后不能同时混用 cin 和 scanf、cout 和 printf,否则输出顺序错乱。做题只用一套输入输出就完全没问题。 - cin.tie(0);
含义
解绑 cin 和 cout。
默认行为
默认 cin.tie(&cout):每次执行 cin >> x 读取数据前,会自动刷新缓冲区,把所有待输出的 cout 内容先打印到屏幕。
频繁读写时,反复刷新缓冲区非常耗时间。
cin.tie(nullptr) / cin.tie(0) 都是切断两者绑定,读入时不再强制刷新输出,进一步提速。
组合效果(做题必备)
只在主函数开头加这两行,针对大数据矩阵、多组输入场景,防止 cin,cout 超时。
全部评论 1
iossync_with_stdio(false);可以改为更好记的iossync_with_stdio(0);
2026-06-26 来自 浙江
0







有帮助,赞一个