非常经典的模拟题,首先需要建立120°坐标系,然后dfs

以下是AC的代码

  1 #include <stdio.h>
  2 #include <stdlib.h>
  3 #include <string.h>
  4 bool map[52][52];
  5 int num, n, list[11], test;
  6 void printmap(){
  7     int i, j;
  8     for (i = 1; i <= 2 * n; ++i){
  9         for (j = 1; j<4 * n; ++j) printf("%d ", map[i][j]);
 10         printf("\n");
 11     }
 12     printf("\n\n");
 13 }
 14 bool canput(int r, int c, int len){
 15     int i, j;
 16     if (r + len - 1 > 2 * n || c + len - 1 > 4 * n) return 0;
 17     if (c % 2 == 0){
 18         for (i = r; i < r + len; ++i)
 19         for (j = c + 2 * (i - r); j < c + 2 * (i - r) + 2 * len - 1 - 2 * (i - r); ++j)
 20         if (map[i][j]) return 0;
 21     }
 22     else{
 23         for (i = r; i < r + len; ++i)
 24         for (j = c; j < c + 2 * (i - r + 1) - 1; ++j)
 25         if (map[i][j]) return 0;
 26     }
 27     return 1;
 28 }
 29 void put(int r, int c, int len){
 30     int i, j;
 31     if (c % 2 == 0){
 32         for (i = r; i < r + len; i++)
 33         for (j = c + 2 * (i - r); j < c + 2 * (i - r) + 2 * len - 1 - 2 * (i - r); j++)
 34             map[i][j] = 1;
 35     }
 36     else{
 37         for (i = r; i < r + len; i++)
 38         for (j = c; j < c + 2 * (i - r + 1) - 1; j++)
 39             map[i][j] = 1;
 40     }
 41     //printmap();
 42 }
 43 void deput(int r, int c, int len){
 44     int i, j;
 45     if (c % 2 == 0){
 46         for (i = r; i < r + len; i++)
 47         for (j = c + 2 * (i - r); j < c + 2 * (i - r) + 2 * len - 1 - 2 * (i - r); j++)
 48             map[i][j] = 0;
 49     }
 50     else{
 51         for (i = r; i<r + len; i++)
 52         for (j = c; j<c + 2 * (i - r + 1) - 1; j++)
 53             map[i][j] = 0;
 54     }
 55 }
 56 bool detect(int r, int c){
 57     if (r>2 * n) return 1;
 58     else if (c>4 * n) return detect(r + 1, 1);
 59     else if (map[r][c]){//找到第一个0的位置
 60         int i;
 61         for (i = c; i <= 4 * n; ++i)
 62         if (!map[r][i]) break;
 63         return detect(r, i);
 64     }
 65     else{
 66         for (int i = 1; i <= num; ++i){
 67             if (canput(r, c, list[i])){
 68                 put(r, c, list[i]);
 69                 if (detect(r, c + 1)) return 1;
 70                 deput(r, c, list[i]);
 71             }
 72             else break;
 73         }
 74         return 0;
 75     }
 76 }
 77 int cmp(const void *a, const void *b){
 78     return *(int *)a - *(int *)b;
 79 }
 80 int main(){
 81 #ifndef ONLINE_JUDGE
 82     freopen("sample_input.txt", "r", stdin);
 83 #endif
 84     scanf("%d", &test);
 85     for (int i = 1; i <= test; ++i){
 86         bool flag = 0;
 87         scanf("%d%d", &n, &num);
 88         for (int j = 1; j <= num; ++j) scanf("%d", &list[j]);
 89         qsort(list + 1, num, sizeof(int), cmp);
 90         for (int j = 1; j <= num; ++j){/*优化*/
 91             if (n%list[j] == 0){
 92                 printf("YES\n");
 93                 flag = 1;
 94                 break;
 95             }
 96             if (list[j] > n){
 97                 num = j - 1;
 98                 break;
 99             }
100         }
101         if (flag) continue;
102         for (int j = 1; j <= num; j++)
103         for (int k = 1; k < j; k++){
104             if (list[j] % list[k] == 0){
105                 for (int l = j; l < num; ++l) list[l] = list[l + 1];
106                 j--;
107                 num--;
108                 break;
109             }
110         }
111         /*---------------------------------------------*/
112         memset(map, 1, sizeof(map));
113         for (int j = 1; j <= n; j++)
114         for (int k = 1; k <= 2 * n + 1 + (j - 1) * 2; k++)
115             map[j][k] = 0;
116         for (int j = n + 1; j <= 2 * n; j++)
117         for (int k = (j - n) * 2; k <= 4 * n; k++)
118             map[j][k] = 0;
119         printmap();
120         if (detect(1, 1)) printf("YES\n");
121         else printf("NO\n");
122     }
123     return 0;
124 }

转载于:https://www.cnblogs.com/proscientist/p/8294849.html

练习题(困难) 百慕大三角 POJ1069相关推荐

  1. 考教育统计与测量可以带哪种计算机,《教育统计与测量》练习题库及答案

    n m 华中师范大学网络教育学院 <教育统计与测量>课程练习题库及答案 本科 一. 名词解释 1.教育统计:是运用数理统计的原理和方法研究教育现象数量表现和数理关系的科学. 2.变量:是指 ...

  2. Tensorflow练习题

    以下练习题来自机器学习实战:基于Scikit和Tensorflow一书. 相比直接执行计算,创建计算图的最大优点是什么?最大的缺 点呢? 答:主要优点:1.TensorFlow可以自动计算梯度(通过反 ...

  3. 130道Python练习题,涵盖基础内容的方方面面

    1.数据类型篇 1.1 基本数据类型 1.1.1 逻辑推理练习(类型转换) 1.1.1.1 bool函数转换规则 1.1.1.2 int("3.42") 为什么会报错 1.1.1. ...

  4. 一年级下册数学计算机应用题,【小学一年级数学练习题】小学生和机器人

    [www.jmzhongda.cn--学生个人工作总结] 一个小学生在认真地做作业. 这是一系列加.减.乘.除的四则应用计算题,难度相当大,特别那几个繁分数题,计算起来太繁杂.他额头上不知不觉地渗出细 ...

  5. 【无标题】2022年汽车修理工(高级)考试练习题及在线模拟考试

    题库来源:安全生产模拟考试一点通公众号小程序 2022年汽车修理工(高级)复训题库为汽车修理工(高级)上岗证题库高频考题覆盖!2022年汽车修理工(高级)考试练习题及在线模拟考试依据汽车修理工(高级) ...

  6. 2022年磺化工艺考试练习题及模拟考试

    题库来源:安全生产模拟考试一点通公众号小程序 2022磺化工艺复习题为磺化工艺模拟考试题库仿真模拟预测!2022年磺化工艺考试练习题及模拟考试根据磺化工艺考试教材.磺化工艺模拟考试试题随时根据安全生产 ...

  7. 2022年湖南省社会工作者考试综合实务(初级)练习题及答案

    1.某村为农户实施了沼气改建项目.项目完成后,妇女们用上了清洁能源做饭,再也不用像过去那样受烟熏火燎的困扰了.这样的沼气项目(B) A.满足了妇女的战略性社会性别需求 B.满足了妇女的实用性社会性别需 ...

  8. 找出只包含1的最大矩形c语言,一些简单的编程练习题

    转载自 http://blog.jobbole.com/53039/ 每当成为入门CS课程(学生们学习编程语言的课程)的助教时,都困于提出好的练习题.Project Euler和类似的问题通常对初学者 ...

  9. 2022第三届全国大学生网络安全精英赛练习题(5)

    全国大学生网络安全精英赛 2022第三届全国大学生网络安全精英赛练习题(5) 文章目录 全国大学生网络安全精英赛 2022第三届全国大学生网络安全精英赛练习题(5) 总结 401.社会工程学攻击是利用 ...

最新文章

  1. linux 命令之文件读取,head, tail, tailf, sed
  2. 用QQ提问的技巧,用了之后可以提高效率,呵呵。
  3. 【雷达对抗】频率测量与频谱分析-频率搜索与测频技术
  4. halcon算子盘点:Chapter 13:对象、Chapter 14 区域
  5. [转]关于数据中台、数据平台、数据仓库、数据湖等数据概念的对比解析
  6. 爬虫学习日记 Day1 开始爬虫
  7. java 创建日程到期提醒_Java 多线程与高并发,基础概念回顾
  8. vue3 eslint吐槽记录
  9. 网页游戏脱机脚本制作视频教程
  10. unity光源自带的Halo效果
  11. VC编程--玩转控件(Windows编程简介)
  12. tomacat 上传图片崩溃问题
  13. xampp 安装swoole
  14. 网页错误详细信息 用户代理: Mozilla/4.0 (compatible; MSIE 8.0;
  15. 电源模块中滤波电容的作用
  16. C++数据结构 矩阵的转置、镜像及旋转
  17. 修改虚拟机的ip地址步骤
  18. 君正T21 SDK编译注意事项
  19. 伴风网易博客linux,推开窗,让春色伴随你我
  20. 手动搭建服务器—Python

热门文章

  1. DNS服务器IP地址大全
  2. springboot gradle 打包排除依赖 排除文件
  3. 主控AU6989SN-GTC/AU6998SN [F500] - F/W FD04,爱国者U盘被写保护怎么办?
  4. 那些做App启动页面应该要想到的地方(Android)
  5. Python面向对象和Java 面向对象的区别
  6. 完美解决64位操作系统配置 php无法加载mysql模块问题
  7. ICLR 2021|基于GAN的二维图像无监督三维形状重建
  8. PHP制作个人名片二维码
  9. 计算机资源库在哪,电脑的资源管理在哪里
  10. C++一本通1086(角谷猜想)