暴力DFS

 /* 2589 */
#include <cstdio>
#include <cstring>
#include <cstdlib> #define MAXN 21 bool map[MAXN][MAXN];
bool visit[MAXN][MAXN];
int l, n; bool dfs(int cnt) {
int i, j, k;
int x, y, r;
int ex, ey;
bool flag = true; for (x=; x<=l; ++x) {
for (y=; y<=l; ++y) {
if (!visit[x][y]) {
flag = false;
break;
}
}
if (flag == false)
break;
}
if (flag) {
if (cnt == )
return true;
else
return false;
}
flag = true;
for (r=; flag&&r<l; ++r) {
ex = x + r;
ey = y + r;
if (ex>l || ey>l)
break;
k = ;
for (i=x; i<=ex; ++i) {
for (j=y; j<=ey; ++j) {
if (map[i][j])
++k;
if (k> || visit[i][j]) {
flag = false;
break;
}
}
if (flag == false)
break;
}
if (k== && flag) {
for (i=x; i<=ex; ++i)
for (j=y; j<=ey; ++j)
visit[i][j] = true;
if (dfs(cnt - ))
return true;
for (i=x; i<=ex; ++i)
for (j=y; j<=ey; ++j)
visit[i][j] = false;
}
}
return false;
} int main() {
int t;
int i, j, k;
bool flag; #ifndef ONLINE_JUDGE
freopen("data.in", "r", stdin);
#endif scanf("%d", &t);
while (t--) {
scanf("%d %d", &l, &n);
memset(map, false, sizeof(map));
memset(visit, false, sizeof(visit));
flag = true;
for (i=; i<n; ++i) {
scanf("%d %d", &j, &k);
if (map[j][k])
flag = false;
map[j][k] = true;
}
if (flag) {
flag = dfs(n);
}
if (flag)
puts("YES");
else
puts("NO");
} return ;
}

【HDOJ】2589 正方形划分的更多相关文章

  1. Codeforces Round #524 (Div. 2) D. Olya and magical square

    D. Olya and magical square 题目链接:https://codeforces.com/contest/1080/problem/D 题意: 给出一个边长为2n的正方形,每次可以 ...

  2. HDOJ题目4417 Super Mario(划分树求区间比k小的个数+二分)

    Super Mario Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tota ...

  3. 并查集(HDOJ 1856)

    并查集   英文:Disjoint Set,即“不相交集合” 将编号分别为1…N的N个对象划分为不相交集合, 在每个集合中,选择其中某个元素代表所在集合. 常见两种操作: n       合并两个集合 ...

  4. 【HDOJ】3727 Jewel

    静态区间第K大值.主席树和划分树都可解. /* 3727 */ #include <iostream> #include <sstream> #include <stri ...

  5. 【HDOJ】3473 Minimum Sum

    划分树解.主席树解MLE. /* 3473 */ #include <iostream> #include <sstream> #include <string> ...

  6. HDOJ 4417 - Super Mario 线段树or树状数组离线处理..

    题意: 同上 题解: 抓着这题作死的搞~~是因为今天练习赛的一道题.SPOJ KQUERY.直到我用最后一种树状数组通过了HDOJ这题后..交SPOJ的才没超时..看排名...时间能排到11名了..有 ...

  7. 算法——A*——HDOJ:1813

    Escape from Tetris Time Limit: 12000/4000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...

  8. 基于octree的空间划分及搜索操作

    (1)  octree是一种用于管理稀疏3D数据的树形数据结构,每个内部节点都正好有八个子节点,介绍如何用octree在点云数据中进行空间划分及近邻搜索,实现“体素内近邻搜索(Neighbors wi ...

  9. hdoj 1518 Square 【dfs】

    题意:给出n个(不同长度的)棍子,问能不能将他们构成一个正方形. 策略:深搜. hdoj 1455的简化版 代码: #include <stdio.h> #include <stri ...

随机推荐

  1. Google Map API v2 (三)----- 地图上添加标记(Marker),标记info窗口,即指定经纬度获取地址字符串

    接上篇 http://www.cnblogs.com/inkheart0124/p/3536322.html 1,在地图上打个标记 private MarkerOptions mMarkOption; ...

  2. Java根据ip地址获取Mac地址,Java获取Mac地址

    Java根据ip地址获取Mac地址,Java获取Mac地址 >>>>>>>>>>>>>>>>>&g ...

  3. opencv多平台环境搭建及使用

    windows平台: 一.安装opencv 下载地址:http://opencv.org/ 依据平台下载相应源码包 安装流程就是一个解压过程.不再赘述. 解压完,效果图: 源码树结构参看http:// ...

  4. js中 的这些距离你知道吗?

  5. (转)网站隔几天打不开,多次重启Apache解决办法

    网站打不开了重启一下apache又好了,但过二天又打不开了,只有重启一下才好,基本上二天重起一次,本文主要解决这个问题 工具/原料 linux服务器 网站 方法/步骤   注意观察cpu占用情况{:s ...

  6. GPS定位,经纬度附近地点查询–C#实现方法

    目前的工作是需要手机查找附近N米以内的商户,功能如下图 数据库中记录了商家在百度标注的经纬度(如:116.412007, 39.947545), 最初想法  以圆心点为中心点,对半径做循环,半径每增加 ...

  7. 非常的奇葩,终于解决了硬盘从盘盘符消失的问题 http://bbs.gamersky.com/thread-1712710-1-1.html (出处: 游民星空论坛)

    本人用电脑也十多年了,硬盘的问题也碰到过不少.但最近却碰到了一个很奇葩的问题.就是安装了一块全新的SSD硬盘当从盘,但在装上之后,在我的电脑中却不显示,没有盘符.不过打开系统磁盘管理却能显示硬盘信息. ...

  8. 图像载入 imread()[OpenCV 笔记4]

    Mat imread( ); filename 载入的图像名: flags 指定加载图像的颜色类型,默认载入三通道彩色图像, 如果取枚举类型 (OpenCV3中暂时失效),则定义如下 enum{ CV ...

  9. Object layout in C++ and access control

    The variables are guaranteed to be laid out contiguously, as in C. However, the access blocks may no ...

  10. Mysql创建删除索引

    1.查看某个表中的索引 show index from 表名 2.为某个表创建索引 alter table 表名 add index 索引名(列名)    //此种方式创建一般的索引 alter ta ...