P1911 L国的战斗之排兵布阵

题目背景

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=1,cnt=1;
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==1) return;c/=2;if(d<a+c&&e<b+c){ddf(a,b,c,d,e);ddf(a,b+c,c,a+c-1,b+c);ddf(a+c,b,c,a+c,b+c-1);ddf(a+c,b+c,c,a+c,b+c); cc++;map[a+c][b+c]=cc;map[a+c][b+c-1]=cc;map[a+c-1][b+c]=cc;}if(d<a+c&&e>=b+c){ddf(a,b,c,a+c-1,b+c-1);ddf(a,b+c,c,d,e);ddf(a+c,b,c,a+c,b+c-1);ddf(a+c,b+c,c,a+c,b+c);cc++;map[a+c][b+c]=cc;map[a+c][b+c-1]=cc;map[a+c-1][b+c-1]=cc;}if(d>=a+c&&e<b+c){ddf(a,b,c,a+c-1,b+c-1);ddf(a,b+c,c,a+c-1,b+c);    ddf(a+c,b,c,d,e);ddf(a+c,b+c,c,a+c,b+c);cc++;map[a+c-1][b+c-1]=cc;map[a+c-1][b+c]=cc;map[a+c][b+c]=cc;}if(d>=a+c&&e>=b+c){ddf(a,b,c,a+c-1,b+c-1);ddf(a,b+c,c,a+c-1,b+c);ddf(a+c,b,c,a+c,b+c-1);ddf(a+c,b+c,c,d,e);cc++;map[a+c-1][b+c-1]=cc;map[a+c][b+c-1]=cc;map[a+c-1][b+c]=cc;}
}
void dnum(int x,int y){map[x][y]=cnt;visit[x][y]=1;if(!visit[x+1][y]&&map[x+1][y]==flag)    dnum(x+1,y);if(!visit[x-1][y]&&map[x-1][y]==flag)    dnum(x-1,y);if(!visit[x][y+1]&&map[x][y+1]==flag)    dnum(x,y+1);if(!visit[x][y-1]&&map[x][y-1]==flag)    dnum(x,y-1);
}
int main(){scanf("%d%d%d",&n,&dx,&dy);while(n){ s*=2;n--; }ddf(1,1,s,dx,dy);visit[dx][dy]=1;for(int i=1;i<=s;i++){for(int j=1;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;}
}

转载于:https://www.cnblogs.com/cangT-Tlan/p/7912247.html

洛谷 P1911 L国的战斗之排兵布阵相关推荐

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

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

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

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

  3. 【背包DP练习】洛谷 P5020货币系统 P1757通天之分组背包 P1064[NOIP2006 提高组]金明的预算方案 P5322 [BJOI2019]排兵布阵

    洛谷 P5020货币系统 https://www.luogu.com.cn/problem/P5020 思路是把货币从小到大排序,然后按顺序依次完全背包dp,每次dp检查i-1种面值的货币能不能凑出第 ...

  4. 洛谷P5322 [BJOI2019] 排兵布阵 题解

    洛谷P5322 [BJOI2019] 排兵布阵 题解 题意:小 C 正在玩一款排兵布阵的游戏.在游戏中有 n n n 座城堡,每局对战由两名玩家来争夺这些城堡.每名玩家有 m m m 名士兵,可以向第 ...

  5. 洛谷4140 奇数国

    题目大意 给定一个初值全为3.长度为100000的序列,并实时改变其中的值,求出给定区间内所有数的乘积product后,问有多少个小于等于product的正整数number满足这个式子: number ...

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

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

  7. 洛谷P5322 [BJOI2019]排兵布阵【分组背包】

    题目描述 小 C 正在玩一款排兵布阵的游戏.在游戏中有 n 座城堡,每局对战由两名玩家来争夺这些城堡.每名玩家有 m 名士兵,可以向第 i 座城堡派遣 a_i名士兵去争夺这个城堡,使得总士兵数不超过 ...

  8. 洛谷 P5322 [BJOI2019]排兵布阵

    P5322 [BJOI2019]排兵布阵 题目大意:玩游戏~~,对于 n 个城堡,有 m 个士兵可以分别派遣到这些城堡. 同时我们有 s 个对手,在每个城堡都会与每个玩家单独比拼,在第 i 个城堡与每 ...

  9. Java 解洛谷PP5322 [BJOI2019] 排兵布阵,包含完整的分组背包状态转移方法说明,通俗易懂

    01.题目及链接 题目链接:https://www.luogu.com.cn/problem/P5322 02.分组背包说明 分组背包:有k组物品,N个物品,一个容量是C的背包.每组物品有若干个,同一 ...

最新文章

  1. oracle模拟试题
  2. pmp 成本估算准确高_如何更准确地估算JavaScript中文章的阅读时间
  3. 581. Shortest Unsorted Continuous Subarray连续数组中的递增异常情况
  4. Linux 源码安装 Python3 和 pip3
  5. java导出csv文件_R语言数据导入与导出
  6. 一起学习C语言:函数(一)
  7. java volatile 原子性_为什么volatile不能保证原子性而Atomic可以?
  8. 高品质UI设计模板PSD下载,设计师的最佳临摹素材
  9. android环境混合app开发,cordova混合App开发:Cordova+Vue实现Android (环境搭建)
  10. java+widthstep,OpenCV 中结构体IplImage 成员width,widthStep使用注意事项
  11. 爬虫入门-爬取有道在线翻译结果(1)
  12. manjaro踩坑记
  13. python for循环写法_python中多重循环的写法
  14. 阿里云code的git
  15. 系统架构——掌握和使用UML包图模型
  16. R语言中的ggmap包
  17. vue在按钮上绑定enter键
  18. vs code python插件_vs code Python code runner配置 , 飞跃|Fly
  19. 1000瓶药水,只有一瓶是有毒的,如何使用最少的小白鼠测出那瓶是毒药?
  20. 10.710.8 基于HyperOpt实现TPE优化基于Optuna实现多种优化

热门文章

  1. iOS屏幕旋转技术点及解决方案总结
  2. 阿里P6+Java研发工程师,到底牛在哪儿?
  3. STM32精英板连接wifi,通过指令控制继电器
  4. Web Scraper爬虫
  5. 超文本标签语言html的主要特点,福建教师招考整理:超文本标记语言(HTML)
  6. 如何查看tkinter可用的字体有哪些
  7. c++语言程序中,main()函数必须放在程序开始的部分,C++多选题(附答案)
  8. R语言 霍尔特指数平滑法(Holt)
  9. 3元特卖好课AngularJs基础视频教程 大漠穷秋AngularJs基础教程 AngularJs入门教程
  10. 摩托罗拉的新一代智能家庭和婴儿监护亮相香港电子产品展