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!的更多相关文章

  1. ural 1221. Malevich Strikes Back!

    1221. Malevich Strikes Back! Time limit: 1.0 secondMemory limit: 64 MB After the greatest success of ...

  2. SGU 319. Kalevich Strikes Back (线段树)

    319. Kalevich Strikes Back Time limit per test: 0.5 second(s)Memory limit: 65536 kilobytes input: st ...

  3. 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 ...

  4. codeforces 300E Empire Strikes Back 数论+二分查找

    题意:给定N个数a1,a2,a3...aN,现在要求最小的n满足 n!/(a1!*a2!*...*aN!) 是一个正整数的最小的n. 分析:这题的想法很明确,就是分解a1!*a2!*...*aN!,把 ...

  5. sgu Kalevich Strikes Back

    这道题就是求一个大矩形被n个矩形划分成n+1个部分的面积,这些矩形之间不会相交,可能包含.. #include <cstdio> #include <cstring> #inc ...

  6. SGU 319 Kalevich Strikes Back(线段树扫描线)

    题目大意: n个矩形,将一个大矩形分成 n+1 块.矩形之间不重合,可是包括.求这n+1个矩形的面积 思路分析: 用线段树记录他们之间的父子关系.然后dfs 计算面积. 当给出的矩形上边的时候,就要记 ...

  7. CF300E. Empire Strikes Back

    题目链接(是的我越来越懒了..) 题目大意及数据范围: 数据范围很大.“最小”二字让我们考虑二分,但是上界...不会爆long long让你写高精吧? 我们可以发现,∑ai一定满足条件,所以上界是1e ...

  8. Masquerade strikes back Gym - 101911D (数学)

    Quite often the jury of Saratov SU use the problem "Masquerade" in different practice sess ...

  9. [转载]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 ...

随机推荐

  1. winform 按顺序连续打印多个PDF文件

    关于PDF打印的问题,前面有篇文章(点这里查看)也叙述过,今天来谈谈另外一种方法 其实方法很简单,因为需要把多个PDF文档按顺序连续打印,为此我们为什么不把要打印的pdf文档按顺序合并成一个PDF打印 ...

  2. KIP-32 Add timestamps to Kafka message

    通过KIP32,Kafka的每条消息都加进了时间戳,这个KIP在0.10.0.0被加入. 说到“时间”,先贴张图,娱乐一下(如果对星球大战系列电影不熟的话,请自动略过……) 这个KIP的文档在 KIP ...

  3. Web Component 文章

    周末无意中了解了Web Component的概念. http://blog.amowu.com/2013/06/web-components.html http://www.v2ex.com/t/69 ...

  4. Javacript中(function(){})() 与 (function(){}()) 区别 {转}

    这个问题可以从不同的角度来看,但从结果上来说 :他们是一样的.首先,如果从AST(抽象语法树)的角度来看,两者的AST是一模一样的,最终结果都是一次函数调用.因此,就解析器产生的结果论而言,两者是没有 ...

  5. Ruby中的语句中断和返回

    李哲 - APRIL 28, 2015 return,break,next 这几个关键字的使用都涉及到跳出作用域的问题,而他们的不同 则在于不同的关键字跳出去的目的作用域的不同,因为有代码块则导致有一 ...

  6. hdu 1800 Flying to the Mars(简单模拟,string,字符串)

    题目 又来了string的基本用法 //less than 30 digits //等级长度甚至是超过了int64,所以要用字符串来模拟,然后注意去掉前导零 //最多重复的个数就是答案 //关于str ...

  7. 网站建设底层知识Socket与Http解析

    在进行网站建设的时候,常常遇到不同的协议,Socket和http协议都可以实现数据传输,但两种传输方式在网站建设中有什么各自的特点,和缺点,如何选择合适的传输方式. 1 数据传输方式 1.1  Soc ...

  8. oracle连接数据

    1.源代码 string connString = "User ID=scott;Password=yanhong;Data Source=(DESCRIPTION = (ADDRESS_L ...

  9. ubuntu14.04安装MATLAB R2014a

    1. 首先现在matlab2014a,http://pan.baidu.com/s/1pJGF5ov [Matlab2014a(密码:en52).该文件下载解压后如下所示: 2. 解压解压包(用lin ...

  10. ios开发--集成银联3.3.0

    项目最近需要集成银联,在网上搜了一下发现都并不是最新版的银联集成教程,自己摸索了一下,总结写了下来. 附上3.3.0的下载网址 https://open.unionpay.com/upload/dow ...