[BZOJ] 1127: [POI2008]KUP
2024-09-08 14:14:25
似曾相识的感觉
考虑另一个判断问题,给定一个k,问这个k是否可行
- 存在矩形和\(sum>2k\),则该矩阵不对判定做出贡献
- 存在矩形和\(sum\in [k,2k]\),则我们找到了一个解
于是判掉这两种情况,专心讨论\(sum<k\)的矩形
找到\(sum<k\)的极大矩形,按它的和\(S\)讨论
- \(S<k\),则无解
- \(S\in [k,2k]\),则我们找到了一个解
- \(S>2k\),递归成小矩形继续求解
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#define int long long
using namespace std;
const int MAXN = 2005;
int n,m;
signed l[MAXN][MAXN],a[MAXN][MAXN],r[MAXN][MAXN],h[MAXN][MAXN];
int sum[MAXN][MAXN];
int Sum(int x,int y,int u,int v){return sum[u][v]+sum[x-1][y-1]-sum[x-1][v]-sum[u][y-1];}
inline void print(int x,int y,int u,int v){
while(Sum(x,y,u,v)>2*m){
if(x==u)
v--;
else if(Sum(x+1,y,u,v)>=m)
x++;
else
u--;
}
printf("%lld %lld %lld %lld\n",y,x,v,u);exit(0);
}
signed main(){
scanf("%lld%lld",&m,&n);
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
scanf("%lld",&a[i][j]);
sum[i][j]=sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1]+a[i][j];
if(a[i][j]>=m&&a[i][j]<=m*2){
printf("%lld %lld %lld %lld\n",j,i,j,i);
return 0;
}
a[i][j]=(a[i][j]<=m*2);
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(!a[i][j])continue;
l[i][j]=r[i][j]=h[i][j]=1;
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(!a[i][j])continue;
if(a[i-1][j])h[i][j]+=h[i-1][j];
if(a[i][j-1])l[i][j]+=l[i][j-1];
}
for(int j=n;j>=1;j--){
if(!a[i][j])continue;
if(a[i][j+1])r[i][j]+=r[i][j+1];
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(!a[i][j])continue;
if(h[i][j]<=1)continue;
l[i][j]=min(l[i-1][j],l[i][j]);
r[i][j]=min(r[i-1][j],r[i][j]);
int x=i-h[i][j]+1,u=i;
int y=j-l[i][j]+1,v=j+r[i][j]-1;
if(Sum(x,y,u,v)>=m)print(x,y,u,v);
}
}
puts("NIE");
}
最新文章
- 帆软报表FineReport数据连接中游标问题解决方案汇总
- python类型转换
- Python学习笔记之条件、循环和其他语句
- sqoop job命令自动生成
- 53. Minimum Window Substring
- JS插件
- Big Event in HDU[HDU1171]
- the service mysql56 was not found in the Windows services的解决办法
- bat命令大全
- hdu 3068 最长回文(manachar模板)
- lease.go
- 深入浅出解读 Java 虚拟机的差别测试技术
- __x__(43)0910第六天__ clearfix 解决:垂直外边距重叠,高度塌陷
- PHP页面间传值的几种方法
- Codeforces828 D. High Load
- Selenium:浏览器及鼠标、键盘事件
- Sublime3 - 插件cssrem
- 福大软工 1816:项目UML设计(团队作业三)
- 作业调度框架_Quartz
- centos6 编译安装nodejs4.3
热门文章
- ThinkSNS+ 是如何计算字符显示长度的
- Jenkins+Git+Docker+K8s部署
- 填坑帖 By cellur925
- Nacos深入浅出(八)
- JQuery序列化表单serialize() 以及 serializeArray()
- Win7系统控制面板“设备和打印机”打不开解决办法
- HangFire 定时任务
- zip (ICSharpCode.SharpZipLib.dll文件需要下载)
- 构造方法,this,super,final,static
- 观察者模式和php实现