SSY20240916提高组T1题解__贪心+大模拟

news2024/11/15 20:03:36

题面

题面描述

fe和xt在玩一个游戏, 在 n × m n\times m n×m的网格图上进行. 定义 ( a , b )    ,    ( c , d ) (a,b)\;,\;(c,d) (a,b),(c,d)见距离为 ∣ a − c ∣ + ∣ b − d ∣ |a-c|+|b-d| ac+bd
现在游戏按照以下步骤进行:

  1. xt选择 k k k个格子
  2. fe选择一个格子(不能选择步骤 1 1 1 中选过的格子)
  3. xt再选择一个格子

现在fe想让两人最后选的格子间距离最大, xt想让这个距离最小. 假设两人都按照最优方式选择, 询问对于 k = 0 , 1 , 2 , . . . , n × m − 1 k=0,1,2,...,n\times m-1 k=0,1,2,...,n×m1, 最后的距离是多少

输入输出格式

输入两个整数 n , m n,m n,m
输出 n × m n\times m n×m个整数, 表示对于不同 k k k的间距

样例输入

4 3

样例输出

3 3 4 4 4 4 4 4 5 5 5 5

数据范围

对于 100 % 100\% 100%的数据, 2 ≤ n × m ≤ 1 0 5 2\le n\times m\le10^5 2n×m105


题解

(没有循环, 只进行了这3个步骤)
我们先假设 k = 0 k=0 k=0
fe知道, 无论自己选哪一个格子, xt都会尽量选和它成对角线的另一个格子(如图)
(金黄色表示fe和xt选的不同情况的一对各点)
在这里插入图片描述
所以fe就要尽量选取靠近网格中间的格点, 以缩小和最远点的距离.
在这里插入图片描述
但是很明显xt也知道这件事, 所以当 k      ! =    0 k\;\;!=\;0 k!=0时, xt就会优先占据中间的格子
因此, 当中间的格子都被占据后, fe就会选择中间格子拓展出去一层的格子
易证得这种方式选出来的最大值最小
在这里插入图片描述
以此类推, 当这些格子也被全部占据后, fe就会选择继续向外拓展的格子(每次拓展之后最大距离都会 + 1 +1 +1)
所以有多少个和当前距离等价的格子, 就输出多少个距离(如下图)在这里插入图片描述
xt会从中间向外拓展, 占据相同颜色的格子(先占红色, 然后黄色, 然后绿色…)
最后算一下每种颜色格子的数量(大模拟), 和它到最远角落的距离, 输出即可
(这细节让我挂了 80 80 80分, 痛失榜二)

AC CODE

屎山代码

#include <bits/stdc++.h>
using namespace std;


int n,m;


int main(){
    cin >> n >> m;
    if(n>m){
        swap(n,m);
    }
    if(n==1||m==1){
        n=n*m;
        int mid=n/2;
        if(n%2==1){
            printf("%d ",mid);
            mid++;
            while(mid<=n-1){
                printf("%d %d ",mid,mid);
                mid++;
            }
        }else{
            while(mid<=n-1){
                printf("%d %d ",mid,mid);
                mid++;
            }
        }
    }else if(n==2||m==2){
        n=n*m;
        if(m%2==1){
            int mid=m/2;
            mid++;
            printf("%d %d ",mid,mid);
            mid++;
            while(mid<=m){
                printf("%d %d %d %d ",mid,mid,mid,mid);
                mid++;
            }
        }else{
            int mid=m/2+1;
            while(mid<=m){
                printf("%d %d %d %d ",mid,mid,mid,mid);
                mid++;
            }
        }
    }else{
        int nn=n%2;
        if(nn==0){
            nn=2;
        }
        int mm=m%2;
        if(mm==0){
            mm=2;
        }
        // printf("nn:%d mm:%d\n",nn,mm);
        int num=nn*mm;
        if(num==1){
        	num=0;
		}
        int N=(n-nn)/2,M=(m-mm)/2;
        int val=n/2+m/2;
        for(int x=1;x<=nn*mm;x++){
            printf("%d ",val);
        }
        int cntn=1;
        int cntm=1;
        while(cntn*2+nn<=n){
            num+=4;
            for(int x=1;x<=num;x++){
//            	cout << num << "awd";
                printf("%d ",val+cntn);
            }
            cntn++;
            cntm++;
            // N++;
        }
        // cout << endl << cntn << ' ' << cntm << endl;
//        cout << endl;
        while(cntm*2+mm<=m){
        	
            for(int x=1;x<=n*2;x++){
                printf("%d ",val+cntm);
            }
            cntm++;
        }
        // cout << endl << cntn << ' ' << cntm << endl;
//        cout << endl;
        while(N>=1){
            for(int x=1;x<=N*4;x++){
                printf("%d ",val+cntm);
            }
            cntm++;
            N--;
        }
        // cout << "END";
    }
    
    return 0;
}

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

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

相关文章

QT + WebAssembly + Vue环境搭建

Qt6.7.2安装工具 emsdk安装 git clone https://github.com/emscripten-core/emsdk.git cd emsdk emsdk install 3.1.50 emsdk activate 3.1.50 Qt Creator配置emsdk 效果 参考 GitHub - BrockReece/vue-wasm: Vue web assembly loader Emscripten cmake多版本编译-CSDN博客 …

【数据结构】排序算法---希尔排序

文章目录 1. 定义2. 算法步骤3. 动图演示4. 性质5. 算法分析6. 代码实现C语言PythonJavaCGo 结语 1. 定义 希尔排序&#xff08;英语&#xff1a;Shell sort&#xff09;&#xff0c;也称为缩小增量排序法&#xff0c;是[直接插入排序]的一种改进版本。希尔排序以它的发明者希…

优化最长上升子序列

前言&#xff1a;平时我们做的题目都是用动态规划做的&#xff0c;但是有没有能够优化一下呢&#xff1f; 有一个结论&#xff0c;长度为 i 的一个序列&#xff0c;最后一个元素一定是构成长度为 i 的序列中最小的 我们可以用二分来优化 题目地址 #include<bits/stdc.h>…

【设计模式】创建型模式(四):建造者模式

创建型模式&#xff08;四&#xff09;&#xff1a;建造者模式 1.概念2.案例3.优化 1.概念 建造者模式 是一种创建型设计模式&#xff0c;它允许你创建复杂对象的步骤与表示方式相分离。 建造者模式是一种创建型设计模式&#xff0c;它的主要目的是将一个复杂对象的 构建过程…

极速上云2.0范式:一键智连阿里云

在传统上云的现状与挑战&#xff1a; 专线上云太重&#xff0c;VPN上云不稳&#xff0c;云上VPC&#xff0c;云下物理网络&#xff0c;多段最后一公里...... 层层对接&#xff0c;跳跳延迟&#xff0c;好生复杂! 当你试图理解SD-WAN供应商和阿里云的文档&#xff0c;以协调路由…

7-ZIP工具的功能分享:合并分卷压缩文件

在日常工作中&#xff0c;有些大文件无法单独传输&#xff0c;我们通常会通过压缩拆分成多个分卷文件来完成传输。 当完成传输后&#xff0c;不想要这么多分卷文件的时候&#xff0c;就可以通过7-ZIP工具的合并功能来解决这个问题。下面一起来看看&#xff0c;具体如何操作。 …

【C++算法】位运算

位运算基础知识 1.基础运算符 << : 左移 >> : 右移 ~ : 取反 & : 按位与&#xff0c;有0就是0 I : 按位或&#xff0c;有1就是1 ^ : 按位异或&#xff0c;&#xff08;1&#xff09;相同为0&#xff0c;相异为1&#xff08;2&#xff09;无进位相加 2.…

【docker】阿里云使用docker,2024各种采坑

▒ 目录 ▒ &#x1f6eb; 导读需求开发环境 1️⃣ dial tcp: lookup on 8.8.8.8:53: no such host失败属于DNS问题 2️⃣ docker镜像配置配置最新镜像源 3️⃣ 【重点】阿里云专用获取自己的镜像加速器地址配置镜像地址 &#x1f6ec; 文章小结&#x1f4d6; 参考资料 &#x…

MySQL_SQLYog简介、下载及安装(超详细)

课 程 推 荐我 的 个 人 主 页&#xff1a;&#x1f449;&#x1f449; 失心疯的个人主页 &#x1f448;&#x1f448;入 门 教 程 推 荐 &#xff1a;&#x1f449;&#x1f449; Python零基础入门教程合集 &#x1f448;&#x1f448;虚 拟 环 境 搭 建 &#xff1a;&#x1…

如何设置xshell关闭最后一个选项卡标签时不退出软件?

不知道你是否遇到这个问题&#xff0c;就是在使用xshell的时候&#xff0c;每次关闭最后一个选项卡标签的时候&#xff0c;xshell软件默认就退出了&#xff0c;好多次我都只是想要关闭&#xff0c;而非退出&#xff0c;所以该如何设置&#xff0c;才能到我们的预期的效果呢&…

re题(23)BUUFCTF-[FlareOn4]login

BUUCTF在线评测 (buuoj.cn) 下载后打开看到是一个txt和一个html 分别打开看看&#xff0c;txt是提示&#xff0c;html应该就是要破解的网页 打开网页&#xff0c;查看源代码 找到程序&#xff0c;变灰的部分是关键&#xff0c;是指如果是前13个字母就加13&#xff0c;如果是…

手机端跑大模型:Ollma/llama.cpp/vLLM 实测对比

昨天给大家分享了&#xff1a;如何在手机端用 Ollama 跑大模型 有小伙伴问&#xff1a;为啥要选择 Ollama&#xff1f; 不用 Ollama&#xff0c;还能用啥&#xff1f;据猴哥所知&#xff0c;当前大模型加速的主流工具有&#xff1a;Ollama、vLLM、llama.cpp 等。 那我到底该…

鸿蒙版 React Native 正式开源,ohos_react_native 了解一下

距离鸿蒙 Next 宣布一年后&#xff0c;除了 Flutter 的鸿蒙支持之外&#xff0c;React Native 的社区支持的 ohos_react_native 也终于在 OpenHarmony-SIG 对外开源&#xff0c;并且和 Flutter 不同在于&#xff0c;本次开源的版本是基于 React Native 0.72.5 。 ohos_react_n…

算法——贡献法

前天的AtCoder Beginner Contest 371 D题碰到了这个贡献法&#xff0c;刚好之前的第十一届蓝桥杯省赛第二场真题AcWing 2868. 子串分值也是用的这个方法hh,但是赛时没有搞出来。。。 AcWing 2868. 子串分值 对于一个字符串 SS&#xff0c;我们定义 SS 的分值 f(S)f(S) 为 SS 中…

UDS 诊断 - TransferData(传输数据)(0x36)服务

UDS 诊断服务系列文章目录 诊断和通信管理功能单元 UDS 诊断 - DiagnosticSessionControl&#xff08;诊断会话控制&#xff09;&#xff08;0x10&#xff09;服务 UDS 诊断 - ECUReset&#xff08;ECU重置&#xff09;&#xff08;0x11&#xff09;服务 UDS 诊断 - SecurityA…

芯片制造过程(科普版)

tip&#xff1a;是搬运过来的&#xff0c;vx公众号&#xff1a;胖虎说可科普(感觉它的视频也是不知道哪里搞过来的&#xff0c;bushi) 目录 1 芯片结构2 制造过程2.1 晶圆的制造2.2 晶圆的加工2.3 掩膜电路2.4 光刻2.5 离子注入2.6 切割 封装等 最后 记录一下编写过程&#xff…

IM系统完结了,那简历该怎么写?(含简历项目描述)

作者&#xff1a;冰河 星球&#xff1a;http://m6z.cn/6aeFbs 博客&#xff1a;https://binghe.gitcode.host 文章汇总&#xff1a;https://binghe.gitcode.host/md/all/all.html 星球项目地址&#xff1a;https://binghe.gitcode.host/md/zsxq/introduce.html 沉淀&#xff0c…

在线仿真器ST-Link为例的整体认知

仿真器的作用 参考 简单来说&#xff0c;仿真器拥有下载和实时程序控制两个功能&#xff0c;而且下载的地址直接指向flash而不需要设置引脚启动单片机内部的bootloader程序&#xff0c;而实际中更加实用的是程序控制调试&#xff0c;这可以减少很多下载操作。 仿真器的在调试…

信息安全工程师(6)网络信息安全现状与问题

一、网络信息安全现状 威胁日益多样化&#xff1a;网络攻击手段不断翻新&#xff0c;从传统的病毒、木马、蠕虫等恶意软件&#xff0c;到勒索软件、钓鱼攻击、DDoS攻击、供应链攻击等&#xff0c;威胁形式多种多样。这些攻击不仅针对个人用户&#xff0c;还广泛影响企业、政府等…

[数据集][图像分类]茶叶病害分类数据集6749张7类别

数据集类型&#xff1a;图像分类用&#xff0c;不可用于目标检测无标注文件 数据集格式&#xff1a;仅仅包含jpg图片&#xff0c;每个类别文件夹下面存放着对应图片 图片数量(jpg文件个数)&#xff1a;6749 分类类别数&#xff1a;7 类别名称:["Unlabeled","alg…