Codeforces Round 891 (Div. 3)ABC

news2024/11/24 6:17:09

Codeforces Round 891 (Div. 3)

目录

  • A. Array Coloring
    • 题目大意
    • 思路
    • 代码
  • B. Maximum Rounding
    • 题目大意
    • 思路
    • 代码
  • C. Assembly via Minimums
    • 题目大意
    • 思路
    • 代码

A. Array Coloring

在这里插入图片描述

题目大意

给你一个包含 n n n个数字的数组,你的任务是判断这个数组是否可以划分成两个子数组,使得子数组的和奇偶同性。

翻译:
给定一个由n个整数组成的数组。您的任务是确定是否有可能以两种颜色为其所有元素上色,从而使两种颜色的元素的和具有相同的奇偶性,并且每种颜色至少有一个元素上色。

例如,如果数组是[1,2,4,3,2,3,5,4],我们可以这样给它上色:[1,2,4,3,2,3,5,4],蓝色元素的和是6,红色元素的和是18。

输入第一行包含一个整数t(1≤t≤1000)—测试用例的个数。

每个测试用例以包含整数n(2≤n≤50)的行开头,即数组a的长度。

下一行包含非整数a1,a2,…,an(1≤ai≤50)-数组a的元素。

输出
对于每个测试用例,如果可以用两种颜色为数组上色,并且两种颜色的元素的和具有相同的奇偶性并且每种颜色至少有一个元素上色,则输出“YES”(不带引号),否则输出“NO”。

您可以在任何情况下输出“Yes”和“No”(例如,字符串“Yes”、“Yes”和“Yes”将被识别为正确答案)。

思路

这道题题题目的关键在于奇偶同性,我们都知道
奇数+奇数=偶数
奇数+偶数=奇数
偶数+偶数=偶数
所以这道题目就可以转化为数组中奇数的个数,如果是奇数个,就不成立,否则就成立。

代码

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

int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        int n;
        scanf("%d",&n);
        long long sum=0;
        for(int i=0;i<n;++i)
        {
            int shuru;
            scanf("%d",&shuru);
            sum+=shuru;
        }
        if(sum%2==0)printf("YES\n");
        else printf("NO\n");
    }
    return 0;
}

B. Maximum Rounding

在这里插入图片描述

题目大意

太复杂了,直接上翻译
翻译:

给定一个自然数x,可以执行如下操作:

选择一个正整数k,将x四舍五入到第k位。请注意,这些位置是从右到左编号的,从0开始。如果数字有k位,则认为第k位的数字等于0。

舍入方法如下:

如果第(k−1)位的数字大于或等于5,则第k位的数字增加1,否则第k位的数字保持不变(使用数学四舍五入)。如果在操作之前,第k位的数字是9,它应该加1,那么我们搜索最小的位置k
’ (k ’ >k),其中第k位的数字小于9,并在第k位的数字上加1。然后赋值k=k ’ 之后,所有位置小于k的数字都被替换为0。
你的任务是使x尽可能的大,如果你可以执行尽可能多的操作的话。

例如,如果x等于3451,那么如果连续选择:

K =1,那么运算后x将变成3450 K =2,那么运算后x将变成3500 K =3,那么经过运算后x将变成4000 K
=4,那么运算后x将变成0 为了使答案最大化,你需要先选择k=2,然后k=3,然后这个数字就变成了4000。 输入 第一行包含一个整数t(1≤t≤104)——测试用例的数量。

每个测试用例由长度不超过2⋅105的正整数x组成。可以保证该整数中没有前导零。

保证所有整数×所有测试用例的长度之和不超过2⋅105。

输出 对于每组输入数据,在操作后输出x的最大可能值。数字的表示形式不应有前导零。

思路

从前往后进行判断,一旦识别到大于等于5的数就可以进行操作了,因为后面的数字再怎么样操作都不会比当前的操作更大,而且操作完当前这一位的数字之后后面的数字会清空变成0,所以我们只需要操作第一个大于对等于 5的数就好了,这里还需要注意一个特殊的情况,那就是当前的数操作完之后要判断前面的数增加1之后是否大于等于5,也就是前面的数字原本是4的情况,以及全部的数字操作完之后总共的位数可能会增加一,注意这两个地方就可以了。

代码

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

int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        string s;
        cin>>s;
        //char a[(int)(2*1e5+10)]{0};
        int zhizhen=0;
        int yishuchu=0;
        bool pd=0;
        for(int i=0;i<(int)s.size();++i)
        {
            if(s[i]>='5')
            {
                for(int j=i+1;j<s.size();++j)
                {
                    s[j]='0';
                }
                for(int j=i-1;j>=0;--j)
                {
                    if(s[j+1]>='5')
                        {
                            s[j]=s[j]+1;
                            s[j+1]='0';
//                            cout<<"******\n";
//                            for(int i=0;i<s.size();++i)
//                                cout<<s[i];cout<<endl;
                        }
                    else
                    {
                        break;
                    }
                }

                //if(s[])
            }
        }
        if(s[0]<='4')
        {
            for(int i=0;i<s.size();++i)
            cout<<s[i];cout<<endl;
        }

        else
        {
            printf("1");
            for(int i=0;i<s.size();++i)
            cout<<0;cout<<endl;
        }
    }
    return 0;
}

C. Assembly via Minimums

在这里插入图片描述

题目大意

对一个长度为n的数组a进行操作,任意两个数之间取最小值,得到一个长度为n*(n-1)/2 的数组b,现在知道数组b,求数组a的可能是哪些数字组成。
翻译:

Sasha有一个包含n个整数的数组a。他觉得很无聊,他得到了一个大小为n·(n−1)2的新数组b。

例如,如果一个=(2、3、5、1),他会写[min(2、3),最小值(2、5)、min(2,
1),最小值(3、5)、min(3,1),最小值(1)]=[2 2 1、3、1、1]。

然后,他随机洗牌数组b的所有元素。

不幸的是,他忘记了数组a,你的任务是恢复任何可能的数组a,从这些数组a中可以得到数组b。

数组a的元素应该在[−109,109]的范围内。

输入 第一行包含一个整数t(1≤t≤200)——测试用例的数量。

每个测试用例的第一行包含一个整数n(2≤n≤103)——数组a的长度。

每个测试用例的第二行包含n⋅(n−1)2个整数b1,b2,…,bn⋅(n−1)2(−109≤bi≤109)-数组b的元素。

可以保证n对所有测试的和不超过103,并且对于测试中的每个数组b,都存在一个原始数组。

输出 对于每个测试用例,输出任意长度为n的数组a。

思路

首先来分析数组a中最小的数字,假设为x,则x在数组b里面出现的次数肯定是n-1次,然后就是第二小的数字,出现的次数肯定是n-2次,第三小的数字出现的次数肯定是n-3次…以此类推,所以直接排序就能得到原来的数组。

代码

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

int arr[(int)1e6+10]{0};

int cmp(int a,int b)
{
    return a<b;
}

int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        int n;
        scanf("%d",&n);
        for(int i=0;i<n*(n-1)/2;++i)
        {
            scanf("%d",&arr[i]);
        }
        sort(arr,arr+(n*(n-1)/2),cmp);
        int zhizhen=0;
        for(int i=n-1;i>0;--i)
        {
            printf("%d ",arr[zhizhen]);
            zhizhen+=i;
        }
//        cout<<"***\n";
//        for(int i=0;i<n*(n-1)/2;++i)
//            cout<<arr[i]<<' ';cout<<endl;
        printf("%d\n",arr[zhizhen-1]);
    }
    return 0;
}

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

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

相关文章

TCP/IP 下的计算机网络江湖

〇、引言 在当今数字化时代,计算机网络宛如广袤江湖,涵盖着五大门派:物理层、数据链路层、网络层、传输层和应用层。每个门派独具技能,共同构筑着现代网络的框架。物理层宛如江湖基石,将比特流传输;数据链路层如武林传承,组织数据帧传递;网络层则像导航大师,寻找传送路…

Web framework-Gin

一、Gin Go Web--Go Module 软件框架&#xff08;software framework&#xff09;&#xff0c;通常指的是为了实现某个业界标准或完成特定基本任务的软件组件规范&#xff0c;也指为了实现某个软件组件规范时&#xff0c;提供规范所要求之基础功能的软件产品。 框架就是&#…

【报童模型】随机优化问题二次规划

面对需求的不确定性&#xff0c;报童模型是做库存优化的常见模型。而标准报童模型假设价格是固定的&#xff0c;此时求解一个线性规划问题&#xff0c;可以得到最优订货量&#xff0c;这种模型存在局限性。因为现实世界中价格与需求存在一定的关系&#xff0c;本文假设需求q是价…

FreeRTOS源码分析-12 低功耗管理

目录 1 STM32低功耗管理概念及应用 1.1睡眠模式 1.2 停止模式 1.3 待机模式 2 Tickless低功耗管理 2.1 Tickless低功耗模式介绍 2.2 FreeRTOS低功耗模式配置 2.3 FreeRTOS低功耗模式应用 3 低功耗管理实际项目开发 3.1 低功耗设计必须要掌握的硬件知识 …

leetcode 1049. 最后一块石头的重量 II

2023.8.13 与分割等和子集类似&#xff0c;可以转化为0-1背包问题。 本题也是需要将数组元素分成两堆&#xff0c;区别在于本题需要使这两堆的差值最小&#xff0c;而之前那题是需要两堆差值为0。 使用之前的一维dp数组的思路&#xff0c;代码如下&#xff1a; class Solution…

开发一个RISC-V上的操作系统(八)—— 抢占式多任务(Preemptive Multitasking)

目录 一、抢占式多任务 二、代码实现 三、上板测试 本节的代码在仓库的 06_Preemptive_Muti_Task 目录下&#xff0c;仓库链接&#xff1a;riscv_os: 一个RISC-V上的简易操作系统 本文代码的运行调试会在前面开发的RISC-V处理器上进行&#xff0c;仓库链接&#xff1a;cpu_…

heap pwn 入门大全 - 1:glibc heap机制与源码阅读(上)

本文为笔者学习heap pwn时&#xff0c;学习阅读glibc ptmalloc2源码时的笔记&#xff0c;与各位分享。可能存在思维跳跃或错误之处&#xff0c;敬请见谅&#xff0c;欢迎在评论中指出。本文也借用了部分外网和其他前辈的素材图片&#xff0c;向各位表示诚挚的感谢&#xff01;如…

MySQL修改编码

插入中文乱码,我电脑上没有出现&#xff0c;我只是来记录一下 MySQL版本: 8.0.34Windows 查看编码 mysql中输入下面的命令 show variables like ‘character_%’; 乱码的一般是图片中划红线的部分不是utf8 character_set_database是设置数据库的默认编码的 character_set_ser…

面试热题(回文链表)

给定一个链表的 头节点 head &#xff0c;请判断其是否为回文链表。 如果一个链表是回文&#xff0c;那么链表节点序列从前往后看和从后往前看是相同的。 回文链表类似于回文串&#xff0c;正读倒读的顺序是一样的&#xff0c;那么我们怎么去判断一个链表是否是回文链表呢&…

7.2.tensorRT高级(2)-学习深度学习中涉及的线程知识

目录 前言1. 多线程2. 问答环节2.1 线程启动相关问题2.2 线程启动函数参数相关问题 总结 前言 杜老师推出的 tensorRT从零起步高性能部署 课程&#xff0c;之前有看过一遍&#xff0c;但是没有做笔记&#xff0c;很多东西也忘了。这次重新撸一遍&#xff0c;顺便记记笔记。 本次…

7. 延迟队列

延迟队列 7.1. 延迟队列概念 延时队列,队列内部是有序的&#xff0c;最重要的特性就体现在它的延时属性上&#xff0c;延时队列中的元素是希望 在指定时间到了以后或之前取出和处理&#xff0c;简单来说&#xff0c;延时队列就是用来存放需要在指定时间被处理的 元素的队列。 7…

第二章-算法

第二章-算法 数据结构和算法的关系 算法是解决特定问题求解步骤的描述&#xff0c;在计算机中表现为指令的有限序列&#xff0c;并且每条指令表示一个或多个操作。 算法的特性 算法有五个基本特征&#xff1a;输入、输出、有穷性、确定性和可行性。 输入&#xff1a;算法具…

LVS集群和nginx负载均衡

目录 1、基于 CentOS 7 构建 LVS-DR 群集。 2、配置nginx负载均衡。 1、基于 CentOS 7 构建 LVS-DR 群集。 1.部署LVS负载调度器 1>安装配置工具 [rootnode6 ~]# yum install -y ipvsadm 2>配置LVS虚拟IP&#xff08;VIP地址&#xff09; [rootnode6 ~]# ifconfig ens…

Tesseract用OpenCV进行文本检测

我没有混日子&#xff0c;只是辛苦的时候没人看到罢了 一、什么是Tesseract Tesseract是一个开源的OCR&#xff08;Optical Character Recognition&#xff09;引擎&#xff0c;OCR是一种技术&#xff0c;它可以识别和解析图像中的文本内容&#xff0c;使计算机能够理解并处理…

Dalsa线阵相机说明(Linea Color GigESeries 2k and 4K)

文章目录 一. Dalsa相机软件整体架构二. 相机编号说明以及软件要求三. 相机硬件参数三. 相机基本参数四. 软件参数设置列表1. Sensor Control Category2. I/O Control Category3. Counter and Timer Control Category4. Advanced Processing Control Category(1) 平场校正介绍(…

蚂蚁聚合支付系统源码完美版+附安装教程

这是我上个月花重金购买的四fang系统源码&#xff0c;现在分享给大家。 源码内附安装教程&#xff0c;20多项功能及安全方面的更新文档&#xff0c;源码说明等&#xff0c;小白也能轻松搭建。 能够轻松应对高并发&#xff0c;等以前版本无法应对的并发问题&#xff0c;也不会被…

JIRA:项目管理的秘密武器

引言 在当今动态且快速变化的商业环境中&#xff0c;项目管理已经成为任何组织成功的关键因素。能够有效地管理项目&#xff0c;保证项目在设定的时间和预算内按照预期的质量完成&#xff0c;是每个项目经理的目标。为了实现这个目标&#xff0c;项目经理需要依赖强大的工具&a…

由于找不到vcruntime140_1.dll,无法继续执行代码该怎么修复呢?

我最近遇到了一个vcruntime140_1.dll的问题&#xff0c;导致我的某些应用程序无法正常运行。当我第一次遇到这个问题时&#xff0c;我对这个dll文件的作用一无所知。我开始搜索并了解了vcruntime140_1.dll是Microsoft Visual C Redistributable的一部分&#xff0c;并为使用Vis…

FreeRTOS(计数信号量)

资料来源于硬件家园&#xff1a;资料汇总 - FreeRTOS实时操作系统课程(多任务管理) 目录 一、计数信号量的定义与应用 1、计数信号量的定义 2、计数信号量的应用 二、计数信号量的运作机制 1、任务间计数信号量的实现 三、计数信号量常用的API函数 1、计数信号量典型流程…

泛型编程| 模板初阶——懒人福音!

目录 前言介绍 函数模板 函数模板格式 函数模板的原理 函数模板的实例化 隐式实例化 显示实例化 模板参数匹配规则 类模板 总结 前言介绍 之前c语言实现swap函数的时候&#xff0c;我们不仅要修改参数的类型&#xff0c;还要修改函数的名字 而在学完函数重载之后&am…