【NOIP】XR-4模拟赛,Oler教练的上班策略

news2024/11/15 15:53:34

author:&Carlton

tag:模拟

topic:【NOIP】XR-4模拟赛,Oler教练的上班策略

language:C++

website:洛谷

date:2023年8月19日


目录

题目

我的题解

思路

源代码

改进


题目

我的题解

思路

        ①将学生有空时间存储在一个n*m的二维数组中,n个学生,m套题。

        ②审核数组中每一个数字在多少个不同列中出现,即每一天需要准备多少套不同的题。

        ③将次数分别存储在一个一维数组中,最后输出数组的值即为结果。

源代码

#include <iostream>
using namespace std;
#define DEBUG 0


int main()
{
    int i, j, n, m, k, t, temp;
    cin >> n >> m >> k;
    //动态分配内存,自动初始化为0
    //用二维数组存储学生数据
    int* a = (int*)calloc(sizeof(int), m * n);
    //最后输出准备场数的数组
    int* b = (int*)calloc(sizeof(int), k);
    for (i = 0; i < n; i++)
    {
        for (j = 0; j < m; j++)
        {
            cin >> *(a+i*m+j);
        }
    }
#if DEBUG
    cout << endl;
    for (i = 0; i < n; i++)
    {
        for (j = 0; j < m; j++)
        {
            cout << *(a + i * m + j)<< " ";
        }
        cout << endl;
    }
    cout << endl;
    for (j = 0; j < m; j++)
    {
        for (i = 0; i < n; i++)
        {
            cout << *(a + i * m + j) << " ";
        }
        cout << endl;
    }
#endif
    //每一个数字在多少个不同列中出现
    for (t = 1; t <= k; t++)
    {
        //第j列即第j套题,按列寻找
        for (j = 0; j < m; j++)
        {
            for (i = 0; i < n; i++)
            {
                if (*(a+i*m+j) == t)
                {
                    //当天要讲的套题数+1
                    b[t - 1]++;
                    //跳出当前列循环
                    break;
                }
                #if DEBUG
                {
                    cout << b[0] << endl;
                }
                #endif
            }
        }
    }
    //输出结果
#if !DEBUG
    for (i = 0; i < k; i++)
    {
        cout << b[i] << " ";
    }
#endif
    return 0;
}

        但计算个数时有三层for循环,是个O(n^{_{}3})时间复杂度的算法,超时了。

改进

        用一个二维数组标记,避免同套题重复记数

#include <iostream>
using namespace std;

int main()
{
    int i, j, n, m, k;
    cin >> n >> m >> k;
    //动态分配内存,自动初始化为0
    //用二维数组存储学生数据
    int* stu = (int*)calloc(sizeof(int), n * m);
    //最后输出准备场数的数组
    int* ans = (int*)calloc(sizeof(int), k);
    int* mark = (int*)calloc(sizeof(int), k * m);
    for (i = 0; i < n; i++)
    {
        for (j = 0; j < m; j++)
        {
            cin >> *(stu + i * m + j);
        }
    }
    //第stu[i][j]天要做第j道题
    for (i = 0; i < n; i++)
    {
        for (j = 0; j < m; j++)
        {
            //标记,避免同套题重复记数
            //只要是用学生stu数组里的数据,记得-1,因为数组从0开始
            if (!*(mark + j * k + *(stu + i * m + j)-1))
            {
                *(mark + j * k + *(stu + i * m + j)-1) = 1;
                *(ans + *(stu + i * m + j) - 1)+=1;
            }
        }
    }
    for (i = 0; i < k; i++)
    {
        cout << *(ans + i) << " ";
    }
    return 0;
}

欢迎指正与分享,谢谢!

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

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

相关文章

iptables防火墙(SNAT与DNAT)

目录 1 SNAT 1.1 SNAT原理与应用 1.2 SNAT工作原理 1.3 SNAT转换前提条件 2 SNAT示例 ​编辑 2.1 网关服务器配置 2.1.1 网关服务器配置网卡 2.1.2 开启SNAT命令 2.2 内网服务器端配置 2.3 外网服务器端配置 2.4 网卡服务器端添加规则 2.5 SNAT 测试 3 DNAT 3.1 网卡…

Windows 11 下使用 VMWare Workstation 17 Pro 新建 CentOS Stream 9 64位 虚拟机 并配置网络

文章目录 为什么选择 CentOS Stream 9下载安装访问连接快照克隆网络配置 为什么选择 CentOS Stream 9 CentOS Linux 8: 已经过了 End-of-life (EOL)CentOS Linux 7: EOL Jun 30th, 2024CentOS Stream 8: EOL May 31st, 2024CentOS Stream 9: End of RHEL9 full support phase …

DTC 19服务学习1

在UDS&#xff08;统一诊断服务&#xff09;协议中&#xff0c;0x19是用于DTC&#xff08;诊断故障代码&#xff09;信息的服务。以下是你提到的子服务的功能和作用&#xff1a; 0x01 - 报告DTC按状态掩码。这个子服务用于获取当前存储在ECU中的DTC列表。状态掩码用于过滤DTC&a…

redis闪退的三大解决办法(windows版本)

目录 一、遇到问题 二、出现问题的原因 三、三大启动方法 &#xff08;一&#xff09;启动服务端的命令一 &#xff08;二&#xff09;启动服务端命令二 &#xff08;三&#xff09;必解决redis服务端 一、遇到问题 下载完成redis的5的版本&#xff0c;要进行启动redis的…

UML基础模型

目录 1.抽象类2.接口3.继承4.实现接口5.关联关系6.聚合关系7.合成&#xff08;组合&#xff09;关系8.依赖关系 1.抽象类 矩形框代表一个类&#xff08;Class&#xff09;。 类图分为三层&#xff1a; 第一层显示类的名称&#xff0c;如果是抽象类&#xff0c;就用斜体显示&am…

kafka--kafka基础概念-ISR详解

kafka基础概念-ISR详解 主要是讲 主 往 从同步中的问题 当绿色P1接收到写入的数据&#xff0c;要同步到紫色的P1S1和P1S2 如何保证一致性呢&#xff1f; 使用In Sync Replicas 也就是ISR概念 为什么不一致的&#xff1f; 因为P1S1同步数据 可能花费 50ms P1S2可能花费60ms…

G0第26章:微服务概述与gRPCprotocol buffers

Go微服务与云原生 1、微服务架构介绍 单体架构&#xff08;电商&#xff09; SOA架构&#xff08;电商&#xff09; 微服务架构&#xff08;电商&#xff09; 优势 挑战 拆分 发展史 第一代:基于RPC的传统服务架构 第二代:Service Mesh(istio) 微服务架构分层 核心组件 Summar…

云安全与多云环境管理:讨论在云计算和多云环境下如何保护数据、应用程序和基础设施的安全

随着云计算和多云环境的广泛应用&#xff0c;企业正面临着数据、应用程序和基础设施安全的新挑战。在这个数字化时代&#xff0c;保护敏感信息和业务运作的连续性变得尤为重要。本文将深入探讨在云计算和多云环境下如何有效地保护数据、应用程序和基础设施的安全。 章节一&…

【Teamcity 安装及入门使用】

Teamcity 安装及入门使用 前言安装无Mysql版本有Mysql版本 启动创建超管用户账户和密码忘记密码结尾语 前言 前不久&#xff0c;teamcity更新了2023.05.2版本&#xff0c;我对teamcity也有一段时间的学习了&#xff0c;所以想写一篇博客来记录一下这段时间的学习过程。 teamc…

这是我的纪念日

我的1460天 写这篇文章&#xff0c;是为了纪念自己这一千多个日日夜夜&#xff0c;我的热爱总算有了回报。 每次看到有小伙伴点赞&#xff0c;评论的时候&#xff0c;我都很开心&#xff0c;我知道自己的选择是正确的&#xff0c;我喜欢分享自己的所见所学&#xff0c;我也很…

7-3 数字加密

分数 15 全屏浏览题目 切换布局 作者 陈建海 单位 浙江大学 输入一个四位数&#xff0c;将其加密后输出。方法是将该数每一位上的数字加9&#xff0c;然后除以10取余&#xff0c;做为该位上的新数字&#xff0c;最后将千位和十位上的数字互换&#xff0c;百位和个位上的数字…

vue-element-admin新增view后点击侧边栏加载慢问题

按照官网文档新增view 新增之后点击显示一直在加载中 解决方案&#xff1a;删除script中这段代码

【自创】关于前端js的“嵌套地狱”的遍历算法

欢迎大家关注我的CSDN账号 欢迎大家关注我的哔哩哔哩账号&#xff1a;卢淼儿的个人空间-卢淼儿个人主页-哔哩哔哩视频 此saas系统我会在9月2号之前&#xff0c;在csdn及哔哩哔哩上发布成套系列教学视频。敬请期待&#xff01;&#xff01;&#xff01; 首先看图 这是我们要解…

<数据结构与算法>二叉树堆的实现

目录 前言 一、树的概念及结构 1 树的概念 2 树的相关概念 二、二叉树的概念及结构 1.二叉树的概念 2. 特殊的二叉树 3. 二叉树的性质 4.二叉树的存储结构 三、二叉树的顺序结构及实现 1.堆的性质 2.堆的插入 3.堆的实现 堆的结构体 HeapInit 初始化 HeapPush 插入 HeapPop 删…

攻防世界-warmup

原题解题思路 只有一张图片&#xff0c;就查看源代码&#xff0c;有一个source.php。 查看source.php&#xff0c;白名单中还有一个hint.php。 hint.php告诉我们flag的位置ffffllllaaaagggg 但是直接跳转是没用的&#xff0c;构造payload。 http://61.147.171.105:55725/sourc…

Android12之com.android.media.swcodec无法生成apex问题(一百六十三)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

excel中有哪些通配符、excel配置问题,数学函数篇1之sum系列

学习excel前需要明确的是事&#xff1a;   在学习excel函数之前&#xff0c;大家需要明确一件事&#xff0c;excel现在设计到了一些新函数&#xff0c;这些新函数只能存在于office365、office2019及更 新版本之中&#xff0c;所以建议大家在学习时安装较新的版本&#xff0c;…

Qt与电脑管家3

1.ui页面设计技巧 最外面的widget&#xff1a; 上下左右的margin都置相同的值 这里有4个widget&#xff0c;做好一个后&#xff0c;后面3个可以直接复制.ui文件&#xff0c;然后进行微调即可。 2.现阶段实现的效果&#xff1a; 3.程序结构&#xff1a; btn1--->btn btn1---…

基于51单片机直流电机转速数码管显示控制系统

一、系统方案 本文主要研究了利用MCS-51系列单片机控制PWM信号从而实现对直流电机转速进行控制的方法。本文中采用了三极管组成了PWM信号的驱动系统&#xff0c;并且对PWM信号的原理、产生方法以及如何通过软件编程对PWM信号占空比进行调节&#xff0c;从而控制其输入信号波形等…

python、numpy、pytorch中的浅拷贝和深拷贝

1、Python中的浅拷贝和深拷贝 import copya [1, 2, 3, 4, [11, 22, 33, [111, 222]]] b a c a.copy() d copy.deepcopy(a)print(before modify\r\n a\r\n, a, \r\n,b a\r\n, b, \r\n,c a.copy()\r\n, c, \r\n,d copy.deepcopy(a)\r\n, d, \r\n)before modify a [1, 2…