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 ...
随机推荐
- [百度空间] --whole-archive & --no-whole-archive
What is it? backgorund: an archive file (.a) is similar as .lib compared to Winodws. it simply conta ...
- 【翻译】Sencha Touch2.4 The Layout System 布局
[翻译]The Layout System 布局 In Sencha Touch there are two basic building blocks: componentsand containe ...
- [nowCoder] 二进制中1的个数
题目描述 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. class Solution { public: int NumberOf1(int n) { ; while(n) ...
- 利用sublime的snippet功能快速创建代码段
在前端开发中我们经常会输入相同的一些基本代码,例如常用的jquery引用,bootstrap框架,cssreset等等,如果每次使用时在复制粘贴感觉很麻烦,这里介绍一种更为简洁的方法 利用sublim ...
- 关于“无法定位程序输入点gzdirect于动态链接库zlib1.dll”的问题
费劲N多力气编译通过之后,最后启动程序过程中却突然得到“无法定位程序输入点gzdirect于动态链接库zlib1.dll”的问题, 分析究其原因是定位不到zlib1.dll,都知道,程序在找dll的时 ...
- 怎样把网站js文件合并成一个?几种方法可以实现
我们在建网站时经常会用js特效代码以使页面更美观,比如js幻灯片代码.js下拉菜单等,但是网页特效一多,如果js文件没有合并的话会降低网站的性能,这时我们就要考虑合并js文件了,ytkah总结了以下几 ...
- 定位position详解:relative与absolute
定位标签:position 包含属性:relative(相对) absolute(绝对) 1.position:relative; 如果对一个元素进行相对定位,首先它将出现在它所在的位置上.然后通过设 ...
- ibatis中iterate的用法(conjunction="or" ",")
例子一 查询条件dto public class queryCondition{ private String[] stuIds; private String name;} 查询sqlMap < ...
- WIN7设置wifi热点的方法
1.以管理员身份运行命令提示符:快捷键win+R→输入cmd→回车2.启用并设定虚拟WiFi网卡:运行命令:netsh wlan set hostednetwork mode=allow ssid=m ...
- hdu 4725
The Shortest Path in Nya Graph Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K ...