2024年CCPC网络赛A题题解 —— 军训Ⅰ(gym105336A)

       个人认为很唐的一道题,考虑到不少人可能懒得写,我这里给大家发个代码叭,还有一点点题解(因为真的不是很难)。这是题面:

        然后我来讲讲怎么做,不觉得会有多少人题目意思都理解不了叭?这个就是要求你构造一个n*m的方阵,满足经过无限次四种变换后恰好会出现四种本质不同的状态,这里的本质不同就是坐标不同的意思,大家可以好好理解下,然后我们通过手玩一部分的样例可以发现本质不同最多只会有13种状态,即k > 13的时候输出”No“,然后k在1,2,3,4,5,6,7,8,9,10,11,12,13的这几种情况中,k = 8,10,12的时候是完全不行的,对于k = 5的时候我们发现当gcd(n,m) = 1的时候也是不可行的,上述是一部分的不可行情况。

        我们的思路就是枚举k,对于每个k我们需要考虑n和m都比较小的时候也会出现不可行方案,一般来讲就是分n <= 2,m <= 2或者n <= 3和m <= 3的情况需要特殊考虑,因此剩下的我们就分k的大小构造答案就行:

         k = 1:全部站满

         k = 2:空出一行或者一列

         k = 3:空出不相邻的两行或者两列

         k = 4:只放在(1,1)

         k = 5: 一共存放LCM(n,m)个人,排列方式为每行逐渐平移下去,可以手玩一下,比如n = m = 3的情况:

                  

         k = 6:放一个人到四个边界上的不同于端点的一点

                 如n = 2,m = 3:

                      

         k = 7:第一行放满,然后把第一个人放到第二行第一个或者列同理:

                    

         k = 9:直接在(2,2)放上一个,或者对于n = 2,m = 3或n = 3,m = 2的情况在(1,1)(n,m)各方一个就行

         k = 11:对于n >= 2 && m >= 4 || n >= 4 && m >= 2,在(1,2)(2,1)(1,4)或者(4,1)上共放三个,然后对于n = 3,m = 3的时候在(1,1)和(3,2)各放一个即可

         k = 13:直接放在(1 , 3)和(3,1)

        上述对于小范围数据需要加特判,然后没什么思维难度,对细节处理有一定要求,我直接放下代码:

#include<bits/stdc++.h>
#define Alex std::ios::sync_with_stdio(false),std::cin.tie(0),std::cout.tie(0);
#define int long long
#define double long double
const int QAQ = 0;
const int mod = 998244353;
const double pi = std::acos(-1.0);
const double eps = 1e-10;char a[2005][2005];signed main()
{Alex;int _;_ = 1;std::cin>>_;while(_--){int n,m,k;std::cin>>n>>m>>k;for(int i = 1;i <= n;i++)for(int j = 1;j <= m;j++) a[i][j] = '-';if(k > 13){std::cout<<"No"<<'\n';continue;}if(k >= 8 && k % 2 == 0){std::cout<<"No"<<'\n';continue;}if(k == 5 && std::__gcd(n,m) == 1){std::cout<<"No"<<'\n';continue;}if(k == 1){std::cout<<"Yes"<<'\n';for(int i = 1;i <= n;i++){for(int j = 1;j <= m;j++) std::cout<<'*';std::cout<<'\n';}continue;}if(k == 2){if(n == 1 && m == 1){std::cout<<"No"<<'\n';continue;}std::cout<<"Yes"<<'\n';if(n > 1){for(int i = 1;i <= m;i++) std::cout<<'-';std::cout<<'\n';for(int i = 2;i <= n;i++){for(int j = 1;j <= m;j++) std::cout<<'*';std::cout<<'\n';}	}else{for(int i = 1;i <= n;i++){std::cout<<'-';for(int j = 2;j <= m;j++) std::cout<<'*';std::cout<<'\n';}}continue;}if(k == 3){if(n < 3 && m < 3){if(n == 1 && m == 1){std::cout<<"No"<<'\n';}if(n == 1 && m == 2){std::cout<<"No"<<'\n';}if(n == 2 && m == 1){std::cout<<"No"<<'\n';}if(n == 2 && m == 2){std::cout<<"No"<<'\n';}continue;}std::cout<<"Yes"<<'\n';if(n >= 3){for(int i = 1;i <= m;i++) std::cout<<'-';std::cout<<'\n';for(int i = 2;i <= n - 1;i++){for(int j = 1;j <= m;j++) std::cout<<'*';std::cout<<'\n';}for(int i = 1;i <= m;i++) std::cout<<'-';std::cout<<'\n';}else{for(int i = 1;i <= n;i++){std::cout<<'-';for(int j = 2;j <= m - 1;j++) std::cout<<'*';std::cout<<'-';std::cout<<'\n';}}continue;}if(k == 4){if(n == 1 || m == 1){std::cout<<"No"<<'\n';continue;}if(n >= 2 && m >= 2){std::cout<<"Yes"<<'\n';std::cout<<'*';for(int j = 2;j <= m;j++) std::cout<<'-';std::cout<<'\n';for(int i = 2;i <= n;i++){for(int j = 1;j <= m;j++) std::cout<<'-';std::cout<<'\n';}}continue;}if(k == 5){std::cout<<"Yes"<<'\n';int lcm = n * m / std::__gcd(n,m);int every = lcm / n;for(int i = 1;i <= n;i++)for(int j = 1;j <= m;j++) a[i][j] = '-';int t = 1;every = m / every;for(int i = 1;i <= n;i++){for(int j = t;j <= m;j = j + every) a[i][j] = '*';t++;if(t == every + 1) t = 1;}for(int i = 1;i <= n;i++){for(int j = 1;j <= m;j++) std::cout<<a[i][j];std::cout<<'\n';}continue;}if(k == 6){if(n >= 3 && m >= 2 || n >= 2 && m >= 3){std::cout<<"Yes"<<'\n';if(n >= 3){for(int i = 1;i <= m;i++) std::cout<<'-';std::cout<<'\n';std::cout<<'*';for(int i = 2;i <= m;i++) std::cout<<'-';std::cout<<'\n';for(int i = 3;i <= n;i++) {for(int j = 1;j <= m;j++) std::cout<<'-';std::cout<<'\n';}}else{std::cout<<'-'<<'*';for(int i = 3;i <= m;i++) std::cout<<'-';std::cout<<'\n';for(int i = 2;i <= n;i++){for(int j = 1;j <= m;j++) std::cout<<'-';std::cout<<'\n';}}}else{std::cout<<"No"<<'\n';continue;}continue;}if(k == 7){if(n >= 3 && m >= 2 || m >= 3 && n >= 2){std::cout<<"Yes"<<'\n';for(int i = 1;i <= n;i++)for(int j = 1;j <= m;j++) a[i][j] = '-';if(n >= 3){for(int i = 1;i <= m;i++) a[1][i] = '*';std::swap(a[1][1],a[2][1]);for(int i = 1;i <= n;i++){for(int j = 1;j <= m;j++) std::cout<<a[i][j];std::cout<<'\n';}}else{for(int i = 1;i <= n;i++) a[i][1] = '*';std::swap(a[1][1],a[1][2]);for(int i = 1;i <= n;i++){for(int j = 1;j <= m;j++) std::cout<<a[i][j];std::cout<<'\n';}}}else{std::cout<<"No"<<'\n';continue;}continue;}if(k == 9){if(n >= 3 && m >= 3){std::cout<<"Yes"<<'\n';for(int i = 1;i <= n;i++)for(int j = 1;j <= m;j++) a[i][j] = '-';a[2][2] = '*';for(int i = 1;i <= n;i++){for(int j = 1;j <= m;j++) std::cout<<a[i][j];std::cout<<'\n';}}elseif(n == 2 && m >= 3 || n >= 3 && m == 2){std::cout<<"Yes"<<'\n';for(int i = 1;i <= n;i++)for(int j = 1;j <= m;j++) a[i][j] = '-';a[1][1] = '*';a[n][m] = '*';for(int i = 1;i <= n;i++){for(int j = 1;j <= m;j++) std::cout<<a[i][j];std::cout<<'\n';}}else{std::cout<<"No"<<'\n';continue;}continue;}if(k == 11){if(n >= 2 && m >= 4 || n >= 4 && m >= 2){std::cout<<"Yes"<<'\n';if(n >= 2 && m >= 4){for(int i = 1;i <= n;i++)for(int j = 1;j <= m;j++) a[i][j] = '-';a[1][2] = '*',a[2][1] = '*',a[1][4] = '*';for(int i = 1;i <= n;i++){for(int j = 1;j <= m;j++) std::cout<<a[i][j];std::cout<<'\n';}}else{for(int i = 1;i <= n;i++)for(int j = 1;j <= m;j++) a[i][j] = '-';a[1][2] = '*',a[2][1] = '*',a[4][1] = '*';for(int i = 1;i <= n;i++){for(int j = 1;j <= m;j++) std::cout<<a[i][j];std::cout<<'\n';}	}}elseif(n == 3 && m == 3){std::cout<<"Yes"<<'\n';for(int i = 1;i <= n;i++)for(int j = 1;j <= m;j++) a[i][j] = '-';a[1][1] = '*';a[3][2] = '*';for(int i = 1;i <= n;i++){for(int j = 1;j <= m;j++) std::cout<<a[i][j];std::cout<<'\n';}}else{std::cout<<"No"<<'\n';continue;}continue;}if(k == 13){if(n >= 3 && m >= 3){std::cout<<"Yes"<<'\n';for(int i = 1;i <= n;i++)for(int j = 1;j <= m;j++) a[i][j] = '-';a[1][3] = '*';a[3][1] = '*';for(int i = 1;i <= n;i++){for(int j = 1;j <= m;j++) std::cout<<a[i][j];std::cout<<'\n';	}	}else{std::cout<<"No"<<'\n';continue;}continue;}}return QAQ;
}

     OK辣,那么这道题目就被秒了~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/53495.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

码上进阶_刷题模块测试_用例设计

码上进阶_刷题模块测试_用例设计 系统概述&#xff1a; 码上进阶是为程序员专门打造的交流平台&#xff0c;采用主流的微服务框架和C端技术栈作为技术基础。在这个平台上&#xff0c;程序员 可以通过刷题、练习和模拟面试来提升自己的面试能力。 功能测试&#xff1a; 登录…

Linux 常用命令 - tail 【显示文件最后几行内容】

简介 tail 这个命令源自英文单词 “尾巴”&#xff0c;它的主要功能是显示文件的最后几行内容。通过使用 tail&#xff0c;用户可以查看文件的最新添加内容&#xff0c;特别是对于监控日志文件来说非常有用。tail 命令默认显示文件的最后 10 行&#xff0c;但这可以通过参数调…

数学建模_数据预处理流程(全)

数据预处理整体流程图 一般数据预处理流程 处理缺失值&#xff1a;填补或删除缺失值。处理异常值&#xff1a;检测并处理异常值。数据编码&#xff1a;将分类变量进行标签编码或独热编码。数据标准化/归一化&#xff1a;对数据进行标准化或归一化处理。连续变量离散化&#xff…

基于JAVA+SpringBoot+Vue的企业级工位管理系统

基于JAVASpringBootVue的企业级工位管理系统 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末附源码下载链接&#x1f345; …

WinCC 中对 VBS 进行单步执行调试

以前应该写过文章给各位展示如何在WinCC 中通过自身控件对脚本&#xff08;C、VBS&#xff09;进行脚本诊断和排错。但是也有用户反馈说在编写了一些相对复杂的脚本后&#xff0c;WinCC自身控件无法做到单步调试&#xff0c;也会影响脚本的诊断调试效率。如果能够对WinCC 中的脚…

论文解读:《LAMM: Label Alignment for Multi-Modal Prompt Learning》

系列文章目录 文章目录 系列文章目录LAMM: Label Alignment for Multi-Modal Prompt Learning学习1、论文细节理解1、研究背景2、论文贡献3、方法框架4、研究思路5、实验6、限制 LAMM: Label Alignment for Multi-Modal Prompt Learning学习 1、论文细节理解 VL模型和下游任务…

Linux_kernel驱动开发11

一、改回nfs方式挂载根文件系统 在产品将要上线之前&#xff0c;需要制作不同类型格式的根文件系统 在产品研发阶段&#xff0c;我们还是需要使用nfs的方式挂载根文件系统 优点&#xff1a;可以直接在上位机中修改文件系统内容&#xff0c;延长EMMC的寿命 【1】重启上位机nfs服…

Docker初识(Docker技术集群与应用)

一、基础设施即服务 IaaS&#xff08;Infrastructure as a Service&#xff09; eg&#xff1a;购买的云服务器&#xff0c;就是IaaS 提供给客户的服务是对所有设施的利用&#xff0c;包括处理、存储、网络和其他基本的计算资源。客户能够部署和运行任意软件&#xff0c;包括…

人工智能安全治理框架导图

资源链接&#xff1a;《人工智能安全治理框架》1.0版发布_中央网络安全和信息化委员会办公室

MAT:一款针对MSSQL服务器的安全检测与审计工具

关于MAT MAT是一款针对MSSQL服务器的安全检测与审计工具&#xff0c;该工具使用C#开发&#xff0c;可以帮助广大研究人员快速识别和发现MSSQL 服务器中的安全问题&#xff0c;并实现安全检测与审计目的。 功能介绍 1、执行自动检查并识别安全问题&#xff1b; 2、允许通过 Win…

java黑马微项目

1 飞机票 代码实现&#xff1a; import java.util.Scanner; public class F1 {public static void main(String[] args) {Scanner input new Scanner(System.in);System.out.print("请输入票价&#xff1a; ");double jia input.nextDouble();System.out.print(&…

Threejs之纹理Texture

本文目录 前言一、Texture的基本概念1.1 定义及作用1.2 常用属性 二、代码及效果2.1 代码2.2 效果 前言 在Three.js中&#xff0c;Texture&#xff08;纹理&#xff09;是一项核心功能&#xff0c;创建一个纹理贴图&#xff0c;将其应用到一个表面&#xff0c;或者作为反射/折射…

web基础之信息泄露

1、目录遍历漏洞 &#xff08;1&#xff09;原理&#xff1a;本质是没有过滤用户输入的 ../ 相关的目录跳转符&#xff0c;使得攻击者通过目录跳转符来遍历服务器中的任意文件。 &#xff08;2&#xff09;题解&#xff1a; eg:根据提示遍历网页目录信息&#xff0c;会在某一个…

无需更换摄像头,无需施工改造,降低智能化升级成本的智慧工业开源了

智慧工业视觉监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒&#xff0c;省去繁琐重复的适配流程&#xff0c;实现芯片、算法、应用的全流程组合&#xff0c;从而大大减少企业级应用约95%的开发成本。用户只需在界面上…

大数据-119 - Flink Window总览 窗口机制-滚动时间窗口-基于时间驱动基于事件驱动

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

损坏SD数据恢复的8种有效方法

SD卡被用于许多不同的产品来存储重要数据&#xff0c;如图片和重要的商业文件。如果您的SD卡坏了&#xff0c;您需要SD数据恢复来获取您的信息。通过从损坏的SD卡中取回数据&#xff0c;您可以确保重要文件不会永远丢失&#xff0c;这对于工作或个人原因是非常重要的。 有许多…

【Qt笔记】QTableWidget控件详解

目录 引言 一、QTableWidget的特点 二、QTableWidget基础 2.1 引入QTableWidget 2.2 基本属性 三、代码示例&#xff1a;初始化QTableWidget 四、编辑功能 4.1 设置单元格为只读 4.2 响应内容更改 五、选择模式 六、样式定制 七、与其他控件的交互 7.1 在单元格…

[SUCTF 2018]annonymous1

知识点&#xff1a; 匿名函数创建其实有自己的名字&#xff08;%00lambda_%d&#xff09; 进入页面开始代码审计. <?php // 使用 create_function 创建一个匿名函数&#xff0c;该函数调用 die() 函数并执行 cat flag.php 命令&#xff08;在服务器上执行&#xff0c;如果…

如何在 DigitalOcean Droplet 云服务器上部署 Next.js 应用

Next.js 是一个流行的 React 框架&#xff0c;可轻松构建服务器渲染的 React 应用程序。在本教程中&#xff0c;我们将介绍如何使用 Nginx 作为反向代理&#xff0c;在 DigitalOcean 的 droplet 云主机上部署 Next.js 应用程序。以下是逐步指南&#xff0c;假设你已经准备好部署…

基于SpringBoot+Vue+MySQL的牙科医就诊管理系统

系统展示 用户前台界面 管理员后台界面 系统背景 当前社会各行业领域竞争压力非常大&#xff0c;随着当前时代的信息化&#xff0c;科学化发展&#xff0c;让社会各行业领域都争相使用新的信息技术&#xff0c;对行业内的各种相关数据进行科学化&#xff0c;规范化管理。这样的…