ural1221. Malevich Strikes Back!
http://acm.timus.ru/problem.aspx?space=1&num=1221
算是枚举的 题目意思是必须划出这样的 11011
10001
00000
10001
11011
注意中间必须是完整的0,不多不少,旁边的1也是如此 不多不少 才可以
题目很简单 预处理出1的个数 以及以当前0为最低顶角的最大正方形的边长 判断一下1的个数是否满足就可
#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<stdlib.h>
#include<vector>
#include<cmath>
using namespace std;
int a[][],dp[][],sum[][];
int main()
{
int i,j,n,maxz,g;
while(cin>>n)
{
if(!n) break;
memset(sum,,sizeof(sum));
memset(dp,,sizeof(dp));
maxz=;
for(i = ; i <= n ; i++)
for(j = ; j <= n ; j++)
{
cin>>a[i][j];
if(a[i][j]==) dp[i][j] = ;
sum[i][j] = sum[i-][j]+sum[i][j-]-sum[i-][j-];
if(a[i][j]==) sum[i][j]++;
}
for(i = ; i <= n ; i++)
for(j = ; j <= n ;j++)
if(a[i][j]==)
{
int k = (min(dp[i-][j],dp[i-][j-]),dp[i-][j+]);
if(i>=*k+&&a[i-*k][j]==)
dp[i][j] = k+;
else
dp[i][j] = ;
//cout<<dp[i][j]<<" "<<i<<" "<<j<<endl;
}
int b[] = {};
b[] = ;
for(i = ; i <= ; i++)
b[i] = b[i-]+*(i-);
for(i =; i <= n ; i++)
for(j = ; j <= n ;j++)
{
if(a[i][j]==)
{
int x=;
for(g = j ; g >= ; g--)
if(a[i][g]==)
break;
else x++;
if(i<*x+||j<*x+) continue;
int s = sum[i][j]-sum[i-*x-][j]-sum[i][j-*x-]+sum[i-*x-][j-*x-];
//if(i==5&&j==5)
//cout<<dp[i][j-x]<<" "<<x<<" "<<sum[i][j]<<endl;
if(dp[i][j-x]==x+&&s==(*x+)*(*x+)-b[x+])
maxz = max(maxz,*x+);
}
}
if(maxz)
cout<<maxz<<endl;
else
puts("No solution");
} return ;
}
ural1221. Malevich Strikes Back!的更多相关文章
- ural 1221. Malevich Strikes Back!
1221. Malevich Strikes Back! Time limit: 1.0 secondMemory limit: 64 MB After the greatest success of ...
- SGU 319. Kalevich Strikes Back (线段树)
319. Kalevich Strikes Back Time limit per test: 0.5 second(s)Memory limit: 65536 kilobytes input: st ...
- April Fools Day Contest 2014 H. A + B Strikes Back
H. A + B Strikes Back time limit per test 1 second memory limit per test 256 megabytes input standar ...
- codeforces 300E Empire Strikes Back 数论+二分查找
题意:给定N个数a1,a2,a3...aN,现在要求最小的n满足 n!/(a1!*a2!*...*aN!) 是一个正整数的最小的n. 分析:这题的想法很明确,就是分解a1!*a2!*...*aN!,把 ...
- sgu Kalevich Strikes Back
这道题就是求一个大矩形被n个矩形划分成n+1个部分的面积,这些矩形之间不会相交,可能包含.. #include <cstdio> #include <cstring> #inc ...
- SGU 319 Kalevich Strikes Back(线段树扫描线)
题目大意: n个矩形,将一个大矩形分成 n+1 块.矩形之间不重合,可是包括.求这n+1个矩形的面积 思路分析: 用线段树记录他们之间的父子关系.然后dfs 计算面积. 当给出的矩形上边的时候,就要记 ...
- CF300E. Empire Strikes Back
题目链接(是的我越来越懒了..) 题目大意及数据范围: 数据范围很大.“最小”二字让我们考虑二分,但是上界...不会爆long long让你写高精吧? 我们可以发现,∑ai一定满足条件,所以上界是1e ...
- Masquerade strikes back Gym - 101911D (数学)
Quite often the jury of Saratov SU use the problem "Masquerade" in different practice sess ...
- [转载]SystemD strikes again : Unit X.mount is bound to inactive unit
http://mamchenkov.net/wordpress/2017/11/09/systemd-strikes-again-unit-var-whatever-mount-is-bound-to ...
随机推荐
- HDU 1028Ignatius and the Princess III(母函数简单题)
Ignatius and the Princess III Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d ...
- 16进制转rgb
- (void)colorWithHexString: (NSString *) stringToConvert { //去掉前后空格换行符 NSString *cString = [[stringT ...
- topcoder 642
A:直接拆开字符串写就好了. 今天的题目比较容易一些: B:题目大意: 求最少的翻转次数,每次翻转i是对应 y%i==0都会翻转. 球所有翻转为off状态的最小次数: 从最小idx开始,依次做就好了, ...
- 如何理解JS项目
JS API(DOM/PhoneGap/Cordova/NodeJS/Library/Android/MongoDB....)最基础,可以看懂一行代码. -------> JS OOP, JS语 ...
- 用WebStorm编辑Markdown
前言[转http://blog.fens.me/webstorm-markdown/] WebStorm是一个非常高效的开发工具,特别对于Web前端的开发.Markdown流行,因为其简化了HTML的 ...
- spring 两个 properties
A模块和B模块都分别拥有自己的Spring XML配置,并分别拥有自己的配置文件: A模块 A模块的Spring配置文件如下: <?xml version="1.0" enc ...
- spark分片个数的确定及Spark内存错误(GC error)的迂回解决方式
我们知道,spark中每个分片都代表着一部分数据,那么分片数量如何被确认的呢? 首先我们使用最常见的HDFS+Spark,sparkDeploy的方式来讨论,spark读取HDFS数据使用的是spar ...
- POJ 2265 Bee Maja (找规律)
题目链接 题意 : 给你两个蜂巢的编号,给你一个的编号让你输出在另外一个蜂巢中对应的编号. 思路 : 先将蜂巢分层,第一层一个数,第二层6个数,第三层12个数…………然后用公式表示出第n层的最后一个数 ...
- Xamarin for Visual Studio 破解日志
一.相关声明 本文涉及的 Xamarin 系列软件的版权为 Xamarin Inc. 所有 以本文涉及的思路和方法破解的软件,禁止用于商业用途 如无必要,学习和研究时最好以正版为准 团队或土豪等若觉得 ...
- hdu 2873 Bomb Game 博弈论
SG函数打表,求NIM和!!! 代码如下: #include<cstdio> #include<cstring> #include<iostream> #inclu ...