原题链接:http://acm.timus.ru/problem.aspx?space=1&num=1006

看到题第一反应:这玩意怎么读入……

本地的话因为是全角字符,会占两个位置,所以需要使用两个getchar()(反正我的IDE会这样),而提交上去getchar是可以读入218,191这样的ASCII码值的。

主程序段就不用说了,随便暴力跑跑就好。

然后是几个坑点:

“Your sequence does not have to be the same with the original sequence used to build the picture on the screen.”

这句并不是说你的正方形输出顺序可以打乱,顺序还是要按画的顺序来。

“(0 ≤ Xi ≤ 49, 0 ≤ Yi ≤ 19) (2 ≤ Ai)”

输出顺序是先列后行,而且从0开始。Ai指的是正方形边长。

样例居然不让复制,那就不用好了,自己打它个20*50的点阵然后慢慢改。

#include<cstdio>
#include<cstring>
#include<algorithm>
#define MN 151
using namespace std;
int read_p,read_ca,read_f;
inline int read(){
read_p=;read_ca=getchar();read_f=;
while(read_ca<''||read_ca>'') read_f=read_ca=='-'?-:read_f,read_ca=getchar();
while(read_ca>=''&&read_ca<='') read_p=read_p*+read_ca-,read_ca=getchar();
return read_p*read_f;
}
int map[][],c,X[],Y[],Z[],num=;
bool work(int x,int y,int z){
if (map[x+z][y]!=&&map[x+z][y]!=) return ;
if (map[x][y+z]!=&&map[x][y+z]!=) return ;
if (map[x+z][y+z]!=&&map[x+z][y+z]!=) return ;
for (int i=x+;i<x+z;i++)
if (map[i][y+z]!=&&map[i][y+z]!=) return ; for (int i=y+;i<y+z;i++)
if (map[x+z][i]!=&&map[x+z][i]!=) return ; int mmh=;
for (int i=y;i<=y+z;i++)
mmh|=(map[x][i]!=)|(map[x+z][i]!=); for (int i=x;i<=x+z;i++)
mmh|=(map[i][y]!=)|(map[i][y+z]!=); if (!mmh) return ;
num++;
X[num]=x;Y[num]=y;Z[num]=z+; for (int i=y;i<=y+z;i++)
map[x][i]=,map[x+z][i]=; for (int i=x;i<=x+z;i++)
map[i][y]=,map[i][y+z]=;
}
int main(){
//freopen("a.in","r",stdin);
/*printf("%d\n",getchar());
printf("%d\n",getchar());*/
register int i,j,k;
for (i=;i<=;i++)
for (j=;j<=;j++){
while (c=getchar(),c=='\n'||c==' ');
if (c==) map[i][j]=;else
if (c==) map[i][j]=;else
if (c==) map[i][j]=;else
if (c==) map[i][j]=;else
if (c==) map[i][j]=;else
if (c==) map[i][j]=;else map[i][j]=;
//if (c==169) map[i][j]=getchar();else map[i][j]=0;
}
for (;;){
for (i=;i<=;i++){
for (j=;j<=;j++) if (map[i][j]>) break;
if (j<=) break;
}
if (i>) break;
for (i=;i<=;i++)
for (j=;j<=;j++)
if (map[i][j]==||map[i][j]==)
for (k=;i+k<=&&j+k<=;k++)
if (work(i,j,k)||(map[i+k][j]!=&&map[i+k][j]!=)||(map[i][j+k]!=&&map[i][j+k]!=)) break;
} printf("%d\n",num);
for (i=num;i;i--){
printf("%d %d %d",Y[i]-,X[i]-,Z[i]);
if (i!=) putchar('\n');
}
}

Timus Online Judge:ural:1006. Square Frames的更多相关文章

  1. 01背包 URAL 1073 Square Country

    题目传送门 /* 题意:问n最少能是几个数的平方和 01背包:j*j的土地买不买的问题 详细解释:http://www.cnblogs.com/vongang/archive/2011/10/07/2 ...

  2. Ural 1073 Square Country (DP)

    题目地址:Ural 1073 DP水题.也能够说是背包. #include <iostream> #include <cstdio> #include <string&g ...

  3. ural 1073. Square Country

    1073. Square Country Time limit: 1.0 secondMemory limit: 64 MB There live square people in a square ...

  4. LeetCode题解:(221) Maximal Square

    题目说明 Given a 2D binary matrix filled with 0's and 1's, find the largest square containing only 1's a ...

  5. Timus Online Judge 1001. Reverse Root

    Input The input stream contains a set of integer numbers Ai (0 ≤ Ai ≤ 1018). The numbers are separat ...

  6. ural 1698. Square Country 5(记忆化搜索)

    1698. Square Country 5 Time limit: 2.0 secondMemory limit: 64 MB The first arithmetical operation ta ...

  7. ural 1073.Square Country(动态规划)

    1073. Square Country Time limit: 1.0 secondMemory limit: 64 MB There live square people in a square ...

  8. 沉迷AC自动机无法自拔之:穿越广场 square

    如标题所言,我已经沉迷于AC自动机无法自拔了... 这又是一道AC自动的题,红红火火恍恍惚惚 穿越广场 [问题描述] L 国的仪仗队要穿越首都广场了.首都广场可以看做是一块 N*M 的矩形网格,仪仗队 ...

  9. CodeChef - SQRGOOD:Simplify the Square Root (求第N个含平方因子数)

    Tiny Wong the chef used to be a mathematics teacher in a senior high school. At that time, he always ...

随机推荐

  1. ERROR: ORA-12560: TNS: 协议适配器错误,解决办法:启动OracleServiceORCL服务

  2. 【JS】第一个js示例

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  3. mongodb 复制集

    mongodb 复制集 复制集简介 Mongodb复制集由一组Mongod实例(进程)组成,包含一个Primary节点和多个Secondary节点,Mongodb Driver(客户端)的所有数据都写 ...

  4. iOS MJRefresh下拉、上拉刷新自定义以及系统详细讲解

    更新: MJRefresh 更新功能,默认根据数据来源 自动显示 隐藏footer,这个功能可以关闭 DoctorTableView.mj_footer.automaticallyHidden = N ...

  5. 如何安装mysql

    如何安装mysql对于初学者来说的确是很麻烦,首先要知道安装mysql仅仅只是安装一个mysql系统,是没有任何可视化操作界面的,所以还要安装一个mysql的管理工具,这是初学者容易蒙的地方之一. m ...

  6. 一个APP页面一个接口

    目前所在的公司做的是健康产业方面的APP,这个产品包括了安卓和IOS还有web三方面,除了要写后台管理的系统外,还要写移动端的接口.第一次写移动端接口就犯了一个错误,以为和web一样是怎么方便怎么来, ...

  7. bzoj 4289: PA2012 Tax

    Description 给出一个N个点M条边的无向图,经过一个点的代价是进入和离开这个点的两条边的边权的较大值,求从起点1到点N的最小代价.起点的代价是离开起点的边的边权,终点的代价是进入终点的边的边 ...

  8. Spark源码剖析(七):Job触发流程原理与源码剖析

    引言 我们知道在application中每存在一个action操作就会触发一个job,那么spark底层是怎样触发job的呢?接下来我们用一个wordcount程序来剖析一下job的触发机制. 解析w ...

  9. The Hungarian Abhorrence Principle

    原文:http://www.butunclebob.com/ArticleS.UncleBob.TheHungarianAbhorrencePrinciple    The Hungarian Abh ...

  10. 从0到上线开发企业级电商项目_前端_01_sublime使用技巧

    一.用户设置 { "color_scheme": "Packages/Color Scheme - Default/Monokai.tmTheme", &quo ...