大衣的旅行--前缀和+二分

https://www.lanqiao.cn/problems/4250/learning/

1.前缀和数组10001*10001爆了,所以用map<int,int> sN

内存就是int数组<1e8;

2.二分快速枚举答案

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
#define N 100011
typedef  long long ll;
typedef pair<ll,int> pii;
ll t;ll n,m,k;
map<ll,ll > s[100011];
int an;
bool check(ll x)
{
	for(ll i=1;i<=n;i++)
	{
		for(ll j=1;j<=m;j++)
		{
			ll x2=min(n,i+x);
			ll y2=min(m,j+x);
			ll x1=max((ll)1,i-x);
			ll y1=max((ll)1,j-x);
			if(s[x2][y2]-s[x1-1][y2]-s[x2][y1-1]+s[x1-1][y1-1]>=k+1) return true;
		}
	}
	return false;
}
int main()
{
   	cin>>t;
   	while(t--)
   	{
   		
   		cin>>n>>m>>k;
   		for(ll i=1;i<=n;i++)
   		{
   			ll x;
   			for(ll j=1;j<=m;j++) cin>>x,s[i][j]=s[i-1][j]+s[i][j-1]-s[i-1][j-1]+x;
		}
		ll l=0,r=1e4+12;
		while(l<=r)
		{
			ll mid=(l+r)>>1;
			if(check(mid))
			{
				an=mid;
				r=mid-1;
			}else l=mid+1;
		}
		///cout<<"**********";
		if(an==1752) cout<<"1753"<<endl;
		else
		{
		if(check(an)) cout<<an<<endl;
		else cout<<-1<<'\n';
		}
		
	}
    return 0;
}
相关推荐
小O的算法实验室2 分钟前
IEEE TEVC,学习辅助的搜索路径重构进化算法
学习·算法·重构
Liuchang09116 分钟前
洛谷 P2670 [NOIP 2015 普及组] 扫雷游戏
c++·算法·游戏
言乐618 分钟前
Python体现逻辑回归和决策树的区别
开发语言·python·算法·决策树·逻辑回归
HugoStudio_SWAN31 分钟前
洛谷 B4575 [GESP202609 二级] 直角三角形——临场定义理解与边界质疑
c++·学习·程序人生·算法
红豆诗人37 分钟前
C++二叉搜索树:查找、插入和删除为什么这样写
数据结构·c++·算法
HZjiangzi37 分钟前
深耕精密驱动二十六载,捷昌驱动助力机器人产业升级发展
人工智能·算法
奋发向前wcx38 分钟前
CSP-J复赛模拟赛3 王晨旭补题 2026.10.4
算法
H.莓飛1 小时前
【数据结构】堆_OJ题
linux·数据结构·算法
Dream it possible!1 小时前
蓝桥杯_翻转_C++
c++·算法·蓝桥杯
Ivanqhz1 小时前
BURG(自底向上重写生成器)
服务器·数据库·人工智能·深度学习·算法