传送门

题意:

给你一个黑白相间的1e9*1e9的棋盘,你需要从里面找出来由b个黑色的格子和w个白色的格子组成的连通器(就是你找出来的b+w个格子要连接在一起,不需要成环)。问你可不可以找出来,如果可以就先打印YES,再打印出所有格子的坐标,否则打印出NO。

题解:

参考博客

如果b和w相等的时候,那么就可以用棋盘的一行来表示。

对于不相等的情况:

如果max(w,b)>min(w,b)*3+1那么这样是找出不来符合条件的连通区域的。

看图中的红色部分你会知道只有这样十十的连接起来才是最大构成情况(这样写代码其实并不麻烦,你不需要一个十一个十的来拼接,可以看一下代码)

就这个十十的拼接可以就是一个十一个十的先拼接,之后多余出来的颜色格子,就用bfs添加到十的周围,但是代码确实太麻烦了

代码:

 1 #include<stdio.h>
2 #include<string.h>
3 #include<iostream>
4 #include<algorithm>
5 #include<map>
6 #include<math.h>
7 using namespace std;
8 typedef long long ll;
9 const int maxn=1e5+5;
10 const int mod=26;
11 const int INF=0x3f3f3f3f;
12 const int block=300;
13 int cnt1=0,cnt2=0;
14 int main()
15 {
16 int t;
17 scanf("%d",&t);
18 while(t--)
19 {
20 int w,b;
21 scanf("%d%d",&b,&w);//b黑色 w白色
22 if(max(w,b)>min(w,b)*3+1)
23 {
24 printf("NO\n");
25 continue;
26 }
27 if(w==b)
28 {
29 printf("YES\n");
30 for(int i=3; i<=w+b+2; ++i)
31 printf("5 %d\n",i);
32 }
33 else if(b<w)
34 {
35 printf("YES\n");
36 w=w-b-1;//将在一行的减掉
37 for(int i=4; i<=b*2+4; i++)
38 {
39 printf("4 %d\n",i);
40 if(w>0 && i&1)
41 {
42 printf("3 %d\n",i);
43 w--;
44 }
45 if(w>0 && i&1 )
46 {
47 printf("5 %d\n",i);
48 w--;
49 }
50 }
51 }
52 else if(b>w)
53 {
54 swap(b,w);
55 printf("YES\n");
56 w=w-b-1;//将在一行的减掉,再对这一行的某些部分添加格子变成十
57 for(int i=4; i<=b*2+4; i++)
58 {
59 printf("3 %d\n",i);
60 if(w>0 && i&1)
61 {
62 printf("2 %d\n",i);
63 w--;
64 }
65 if(w>0 && i&1 )
66 {
67 printf("4 %d\n",i);
68 w--;
69 }
70 }
71 }
72 }
73 return 0;
74 }

最新文章

  1. 【mysql】mysql 常用建表语句
  2. javascript 核心语言笔记 4 - 表达式和运算符
  3. wordpress视频教程
  4. 转:如何调试PHP的Core之获取基本信息
  5. 《IO 系统性能》笔记
  6. HTML 学习笔记 CSS样式(边框)
  7. NGUI Sprite Type(Simple、Sliced、Tiled、Filed、Advanced)
  8. Nginx架构的企业级应用
  9. 94. Binary Tree Inorder Traversal
  10. Java模块化概念解惑与现状总结
  11. oracle tkprof 工具详解
  12. hdu 3926 Hand in Hand
  13. 【JAVASCRIPT】React学习-JSX 语法
  14. Angular JS 基础应用--第一篇
  15. springmvc配置文件配置的事务作用范围
  16. MVC思想概述
  17. 苹果ios系统无法通过RD Client连接win10服务器远程错误0x00001307
  18. js 如何判断数组元素是否存在重复项
  19. ext.net 实现gridpanel checkbox锁定
  20. win10虚拟桌面使用方法-提高工作效率

热门文章

  1. LeetCode701 二叉搜索树中插入结点
  2. Jenkins Android APP 持续集成体系建设二—自动部署、执行测试任务,关联打包任务
  3. Docker Java 镜像基础(四)
  4. 【JS学习】for-in与for-of
  5. (十八)configparser模块
  6. ps -eo 用户自定义格式显示
  7. MybatisPlus多数据源及事务解决思路
  8. Mybatis解决字段与属性不匹配的问题、链表查询、嵌套查询、#{}和${}的区别
  9. SEO大杀器rendertron安装
  10. 导出exe的经验