题目背景

L国即将与I国发动战争!!

题目描述

L国的指挥官想让他的每一个军营都呈现出国徽形——“L”形(方向无所谓)。当然,他的指挥营除外(这叫做个性),他想不出该怎么排,就这样,这任务又变成了你的……

输入输出格式

输入格式:

一行三个数:n、x、y表示军营大小为2^N,指挥营在(x,y)的位置上。

输出格式:

2^N行,每行2^N个数,表示军营号(按先行后列顺序)指挥营用0表示。

输入输出样例

输入样例#1: 复制

4 1 3
输出样例#1: 复制

1 1 0 2 3 3 4 4 5 5 6 6 7 7 8 8
1 9 2 2 3 10 10 4 5 11 11 6 7 12 12 8
13 9 9 14 15 15 10 16 17 11 18 18 19 19 12 20
13 13 14 14 21 15 16 16 17 17 18 22 22 19 20 20
23 23 24 21 21 25 26 26 27 27 28 28 22 29 30 30
23 31 24 24 25 25 32 26 27 33 33 28 29 29 34 30
35 31 31 36 37 32 32 38 39 39 33 40 41 34 34 42
35 35 36 36 37 37 38 38 43 39 40 40 41 41 42 42
44 44 45 45 46 46 47 43 43 48 49 49 50 50 51 51
44 52 52 45 46 53 47 47 48 48 54 49 50 55 55 51
56 52 57 57 58 53 53 59 60 54 54 61 62 62 55 63
56 56 57 64 58 58 59 59 60 60 61 61 65 62 63 63
66 66 67 64 64 68 69 69 70 70 71 65 65 72 73 73
66 74 67 67 68 68 75 69 70 76 71 71 72 72 77 73
78 74 74 79 80 75 75 81 82 76 76 83 84 77 77 85
78 78 79 79 80 80 81 81 82 82 83 83 84 84 85 85

说明

数据范围:

1≤n≤10, 1≤x,y≤2^n

思路:搜索。

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define MAXN 1050
using namespace std;
int s=,cnt=;
int n,dx,dy,cc,flag;
int map[MAXN][MAXN];
bool visit[MAXN][MAXN];
void ddf(int a,int b,int c,int d,int e){
if(c==) return;
c/=;
if(d<a+c&&e<b+c){
ddf(a,b,c,d,e);
ddf(a,b+c,c,a+c-,b+c);
ddf(a+c,b,c,a+c,b+c-);
ddf(a+c,b+c,c,a+c,b+c);
cc++;
map[a+c][b+c]=cc;
map[a+c][b+c-]=cc;
map[a+c-][b+c]=cc;
}
if(d<a+c&&e>=b+c){
ddf(a,b,c,a+c-,b+c-);
ddf(a,b+c,c,d,e);
ddf(a+c,b,c,a+c,b+c-);
ddf(a+c,b+c,c,a+c,b+c);
cc++;
map[a+c][b+c]=cc;
map[a+c][b+c-]=cc;
map[a+c-][b+c-]=cc;
}
if(d>=a+c&&e<b+c){
ddf(a,b,c,a+c-,b+c-);
ddf(a,b+c,c,a+c-,b+c);
ddf(a+c,b,c,d,e);
ddf(a+c,b+c,c,a+c,b+c);
cc++;
map[a+c-][b+c-]=cc;
map[a+c-][b+c]=cc;
map[a+c][b+c]=cc;
}
if(d>=a+c&&e>=b+c){
ddf(a,b,c,a+c-,b+c-);
ddf(a,b+c,c,a+c-,b+c);
ddf(a+c,b,c,a+c,b+c-);
ddf(a+c,b+c,c,d,e);
cc++;
map[a+c-][b+c-]=cc;
map[a+c][b+c-]=cc;
map[a+c-][b+c]=cc;
}
}
void dnum(int x,int y){
map[x][y]=cnt;
visit[x][y]=;
if(!visit[x+][y]&&map[x+][y]==flag) dnum(x+,y);
if(!visit[x-][y]&&map[x-][y]==flag) dnum(x-,y);
if(!visit[x][y+]&&map[x][y+]==flag) dnum(x,y+);
if(!visit[x][y-]&&map[x][y-]==flag) dnum(x,y-);
}
int main(){
scanf("%d%d%d",&n,&dx,&dy);
while(n){ s*=;n--; }
ddf(,,s,dx,dy);
visit[dx][dy]=;
for(int i=;i<=s;i++){
for(int j=;j<=s;j++){
if(visit[i][j]){
printf("%d ",map[i][j]);
continue;
}
flag=map[i][j];
dnum(i,j);
cnt++;
printf("%d ",map[i][j]);
}
cout<<endl;
}
}

洛谷 P1911 L国的战斗之排兵布阵的更多相关文章

  1. 洛谷 P1910 L国的战斗之间谍

    洛谷 P1910 L国的战斗之间谍 传送门 思路 二维背包模板题 三维肯定会爆掉,所以换二维 代码 #include <bits/stdc++.h> #define N 1111 usin ...

  2. 洛谷 P1910 L国的战斗之间谍(水题日常)

    题目背景 L国即将与I国发动战争!! 题目描述 俗话说的好:“知己知彼,百战不殆”.L国的指挥官想派出间谍前往I国,于是,选人工作就落到了你身上. 你现在有N个人选,每个人都有这样一些数据:A(能得到 ...

  3. 洛谷 P2129 L国的战斗续之多路出击(模拟)

    P2129 L国的战斗续之多路出击 题目背景 广而告之:背景见其他L国的战斗!!大家一起刷 题目描述 这一次,L国决定军队分成n组,分布在各地,若以L国为原点,可以看作在一个直角坐标系内.但是他们都受 ...

  4. 洛谷——P1910 L国的战斗之间谍

    https://www.luogu.org/problem/show?pid=1910#sub 题目背景 L国即将与I国发动战争!! 题目描述 俗话说的好:“知己知彼,百战不殆”.L国的指挥官想派出间 ...

  5. 洛谷 P1913 L国的战斗之伞兵

    P1913 L国的战斗之伞兵 题目背景 L国即将与I国发动战争!! 题目描述 为了在敌国渗透作战,指挥官决定:派出伞兵前往敌国!然而敌国的风十分强烈,能让伞兵在同一高度不停转悠,直到被刮到一个无风区… ...

  6. 洛谷P1910 L国的战斗之间谍

    //二维费用01背包 #include<bits/stdc++.h> using namespace std; ; ; ; int v1[maxn],v2[maxn],w[maxn],n, ...

  7. 洛谷---小L和小K的NOIP考后放松赛

    链接: https://www.luogu.org/contestnew/show/11805?tdsourcetag=s_pcqq_aiomsg 题解: 没人过的题我就没看 t2: 考虑每个点是朋友 ...

  8. 洛谷 P3182 [HAOI2016]放棋子(错排问题)

    题面 luogu 题解 裸的错排问题 错排问题 百度百科:\(n\)个有序的元素应有\(n!\)个不同的排列,如若一个排列使得所有的元素不在原来的位置上,则称这个排列为错排:有的叫重排.如,1 2的错 ...

  9. 洛谷——P4071 [SDOI2016]排列计数(错排+组合数学)

    P4071 [SDOI2016]排列计数 求有多少种长度为 n 的序列 A,满足以下条件: 1 ~ n 这 n 个数在序列中各出现了一次 若第 i 个数 A[i] 的值为 i,则称 i 是稳定的.序列 ...

随机推荐

  1. [笔记-图论]Dijkstra

    用于求正权有向图 上的 单源最短路 优化后时间复杂度O(mlogn) 模板 // Dijkstra // to get the minumum distance with no negtive way ...

  2. Dynamic Rankings(分块)

    P2617 Dynamic Rankings 题目描述 给定一个含有n个数的序列a[1],a[2],a[3]--a[n],程序必须回答这样的询问:对于给定的i,j,k,在a[i],a[i+1],a[i ...

  3. Git 服务器更换了IP的解决方法

    1.找到项目根目录中的.git文件夹 2..git文件夹里有一个config文件 3.用记事本打开后,修改为服务器的新ip就行了.

  4. STM32中断名词

    1.NVIC的优先级概念    占先式优先级 (pre-emption priority):    高占先式优先级的中断事件会打断当前的主程序/中断程序运行— —抢断式优先响应,俗称中断嵌套.    ...

  5. 算法导论————EXKMP

    [例题传送门:caioj1461] [EXKMP]最长共同前缀长度 [题意]给出模板串A和子串B,长度分别为lenA和lenB,要求在线性时间内,对于每个A[i](1<=i<=lenA), ...

  6. Word 操作组件介绍 - Spire.Doc

    http://www.cnblogs.com/liqingwen/p/5898368.html

  7. 23. Angular 中用 a 标签 href 路由时在浏览器中显示异常 "%2F" 路由失败问题1

    这个是angular1.6默认给hash路由上添加了!(感叹号),导致出错,修改方法如下(添加配置,去掉默认前缀感叹号):   angular.module('routingDemoApp',['ng ...

  8. 4.angularJS-指令(directive)

    转自:https://www.cnblogs.com/best/p/6225621.html 指令(directive)是AngularJS模板标记和用于支持的JavaScript代码的组合.Angu ...

  9. BZOJ 2553 AC自动机+矩阵快速幂 (神题)

    思路: 我们先对所有读进来的T建一个AC自动机 因为走到一个禁忌串就需要回到根 所以呢 搞出来所有的结束点 或一下 fail指针指向的那个点 然后我们就想转移 a[i][j]表示从i节点转移到j节点的 ...

  10. Ubuntu Bonding(16.04网卡绑定)

    UbuntuBonding(网卡绑定) 绑定,也称为端口聚合或链路聚合,意味着将多个网络接口(NIC)组合到单个链路,从而提供高可用性,负载平衡,最大吞吐量或这些组合.注意bonding只能提供链路监 ...