Codeforces Round 891 (Div. 3)ABC

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.rhkb.cn/news/88899.html

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

相关文章

换架 3D 飞机,继续飞呀飞

相信大多数图扑 HT 用户都曾见过这个飞机的 Demo&#xff0c;在图扑发展的这十年&#xff0c;这个 Demo 是许多学习 HT 用户一定会参考的经典 Demo 之一。 这个 Demo 用简洁的代码生动地展示了 OBJ 模型加载、数据绑定、动画和漫游等功能的实现。许多用户参考这个简单的 Demo 后…

MySQL中用什么数据类型存IP地址

提到IP地址(IPv4)&#xff0c;我们脑子里肯定立马浮现类似于192.168.0.1、127.0.0.1这种常见的IP地址&#xff0c;然后结合这个问题“MySQL中用什么数据类型存IP地址&#xff1f;”&#xff0c;于是乎脱口而出用char字符串类型存储。 然后再仔细想想发现&#xff0c;这个IP地址…

腾讯云标准型CVM云服务器详细介绍

腾讯云CVM服务器标准型实例的各项性能参数平衡&#xff0c;标准型云服务器适用于大多数常规业务&#xff0c;例如&#xff1a;web网站及中间件等&#xff0c;常见的标准型云服务器有CVM标准型S5、S6、SA3、SR1、S5se等规格&#xff0c;腾讯云服务器网来详细说下云服务器CVM标准…

页面切换后,滚动栏问题

项目场景&#xff1a; 提示&#xff1a;react项目antd后台管理系统 问题描述 后台管理系统从a页面进入b页面&#xff0c;a页面有数据&#xff08;有滚动条&#xff0c;且scollTop大于0&#xff09;&#xff0c;进入b页面后&#xff0c;滚动条不是位于初始位置&#xff08;scol…

Opencv4基于C++基础入门笔记:图像 颜色 事件响应 图形 视频 直方图

效果图◕‿◕✌✌✌&#xff1a;opencv人脸识别效果图(请叫我真爱粉) 先看一下效果图勾起你的兴趣&#xff01; 文章目录&#xff1a; 一&#xff1a;环境配置搭建 二&#xff1a;图像 1.图像读取与显示 main.cpp 运行结果 2.图像色彩空间转换 2.1 换色彩 test.h …

自动化安装系统—PXE(一)

系统安装过程 加载boot loader加载启动安装菜单加载内核和initrd文件加载根系统运行anaconda的安装向导 安装光盘中与安装相关的文件 安装autofs启动后会自动出现/misc目录。 在虚拟机设置中添加CD/DVD&#xff0c;使用系统ISO文件&#xff0c;登录系统后mount /dev/cdrom …

Kettle系列(二)smart-kettle本地离线部署

Kettle系列&#xff08;二&#xff09;smart-kettle本地离线部署 说明一、概述二、代码下载&#xff08;1&#xff09;后端代码依赖下载&#xff08;2&#xff09;前端代码依赖下载 三、创建数据库&#xff08;mysql8&#xff09;四、修改配置文件五、mysql8数据库配置六、其他…

网络:路由

1. 路由器 路由器工作在三层&#xff0c;每个接口都处于不用的网段中&#xff0c;即不同的广播域。但大多情况下&#xff0c;两台路由器直接相连的接口是同一个广播域&#xff0c;即一个网段。 路由器具有判断网络地址和选择路径的功能&#xff0c;能在多网络互联的环境中&…

Mybatis一级缓存与二级缓存

Mybatis一级缓存与二级缓存 缓存就是内存中的数据&#xff0c;常常来自对数据库查询结果的保存&#xff0c;使用缓存可以避免频繁与数据库进行交互&#xff0c;从而提高查询响应速度。 mybaits提供内存支持&#xff1b; 一级缓存 一级缓存&#xff0c;sqlSession级别的缓存…

NZ系列工具NZ02:VBA读取PDF使用说明

【分享成果&#xff0c;随喜正能量】时光绽放并蒂莲&#xff0c;更是一份殷殷嘱托&#xff0c;更是一份诚挚祝福&#xff0c;是一份时光馈赠&#xff0c;又是一份时光陪伴。。 我的教程一共九套及VBA汉英手册一部&#xff0c;分为初级、中级、高级三大部分。是对VBA的系统讲解…

多线程事务怎么回滚?

项目中用到了多线程去批量处理一些数据&#xff0c;当时想当然认为只要方法上加上Transactional注解就好了&#xff0c;实际并未达到想要的处理效果。特此去学习了下关于多线程事务回滚相关方案&#xff0c;参考了网上其他资料&#xff0c;这里整理并记录下学习历程。 站在巨人…

VR全景智慧文旅,用科技助力旅游业振兴

引言&#xff1a; 近年来&#xff0c;科技的迅猛发展将我们带入一个全新的数字化时代&#xff0c;而虚拟现实&#xff08;Virtual Reality&#xff0c;简称VR&#xff09;技术则以其令人惊叹的全新方式&#xff0c;影响着各个领域。其中&#xff0c;旅游业作为人们探索世界、体…

微服务03-RabbitMQ

1、简介 MQ,中文是消息中间件(队列)(MessageQueue),字面来看就是存放消息的队列。也就是事件驱动架构中的Broker。 简单来说,消息中间件就是指保存数据的一个容器(服务器),可以用于两个系统之间的数据传递。 几种常见MQ的对比: RabbitMQActiveMQRocketMQKafka公司…

云安全攻防(十)之 资源耗尽型攻击

资源耗尽型攻击 同为虚拟化技术&#xff0c;容器与虚拟机既存在相似之处&#xff0c;也有显著不同。在资源限制方面&#xff0c;无论使用 VMware、Virtual Box 还是 QEMU&#xff0c;我们都需要为即将创建的虚拟机设定明确的CPU、内存及硬盘资源阈值。在虚拟机内部进程看来&am…

Android自定义侧滑Item

源码地址&#xff1a;https://github.com/LanSeLianMa/CustomizeView/tree/master/cehuaitem 使用方式一&#xff1a;XML布局中直接使用 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com…

【Node.js】低代码平台源码

一、低代码简介 低代码管理系统是一种通过可视化界面和简化的开发工具&#xff0c;使非专业开发人员能够快速构建和管理应用程序的系统。它提供了一套预先定义的组件和模块&#xff0c;使用户可以通过拖放操作来设计应用程序的界面和逻辑。低代码管理系统还提供了自动化的工作…

STM32自带的DSP库的滤波初体验(一)

最近在弄STM32自带的DSP库里的滤波&#xff0c;记录一下&#xff1a; arm_fir_instance_q15 instance_q15_S; #define NUM_TAPS 16 //滤波系数的个数 #define BLOCK_SIZE 32 q15_t firStateF32[BLOCK_SIZE NUM_TAPS]; q15_t Fir_Coeff[NUM_TAPS] {-79, -136, 312, 6…

基于 SIFT 和 RANSAC 算法对高分辨率图像进行图像伪造检测(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

二叉树的存储结构(顺序存储)—— 数据结构与算法

&#x1f636;‍&#x1f32b;️Take your time ! &#x1f636;‍&#x1f32b;️ &#x1f4a5;个人主页&#xff1a;&#x1f525;&#x1f525;&#x1f525;大魔王&#x1f525;&#x1f525;&#x1f525; &#x1f4a5;代码仓库&#xff1a;&#x1f525;&#x1f525;魔…

从零开始学习 Java:简单易懂的入门指南之抽象类接口内部类(十一)

面向对象进阶&#xff08;抽象类&接口&内部类&#xff09; 第一章 抽象类1.1 概述1.1.1 抽象类引入 1.2 abstract使用格式1.2.1 抽象方法1.2.2 抽象类1.2.3 抽象类的使用 1.3 抽象类的特征1.4 抽象类的细节1.5 抽象类存在的意义 第二章 接口2.1 概述2.2 定义格式2.3 接…