Codeforces Round 893 (Div. 2)ABC

Codeforces Round 892 (Div. 2)

目录

  • A. United We Stand
    • 题目大意
    • 思路
    • 代码
  • B. Olya and Game with Arrays
    • 题目大意
    • 思路
    • 代码
  • C. Another Permutation Problem
    • 题目大意
    • 思路
    • 代码

A. United We Stand

在这里插入图片描述

题目大意

给你一个数组,把这个数组分成两个数组a和b,使得数组a任意一个数都不是数组b内任意一个数的倍数
翻译:

给定一个长度为n的数组a,包含整数。并且有两个初始为空的数组b和c。您需要将数组a的每个元素恰好添加到数组b或c中的一个,以满足以下条件:

数组b和c都是非空的。更正式地说,设lb为数组b的长度,lc为数组c的长度,则lb,lc≥1。对于任意两个指标i
j(1≤i≤lb,1≤j≤lc) cj不是bi的约数。输出可查询到的数组b和c,如果不存在则输出−1。

输入 每个测试由多个测试用例组成。第一行包含一个整数t(1≤t≤500)——测试用例的数量。下面是测试用例的描述。

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

每个测试用例的第二行包含n个整数a1,a2,…,an(1≤ai≤109)-数组a的元素。

输出 对于每个测试用例,如果不存在解决方案,则输出单个整数−1。

否则,在第一行中,分别输出两个整数lb和lc——数组波段c的长度。

在第二行中,输出lb整数b1,b2,…,bl——数组b的元素。

在第三行中,输出lc个整数c1,c2,…,cl——数组c的元素。

如果有多个解,输出其中任何一个。您可以以任何顺序输出数组中的元素。

思路

对于这一个数组,除了最大的数本身,其他的数都不会是最大的数的倍数,所以直接把最大的数放到数组b,其他的数放到数组a,需要进行特判,如果所有的数一样,也就是说最大的数否放到数组b之后数组a没有数字,此时不存在解输出“-1”

代码

#include<iostream>
#include<vector>
using namespace std;int main()
{int t;cin>>t;while(t--){int n;scanf("%d",&n);int a[110]={0};for(int i=0;i<n;++i){scanf("%d",&a[i]);}int maxzhi=INT_MIN;for(int i=0;i<n;++i){maxzhi=max(maxzhi,a[i]);}vector<int>b,c;for(int i=0;i<n;++i)if(a[i]==maxzhi)c.push_back(a[i]);else b.push_back(a[i]);if(b.size()==0)printf("-1\n");else{printf("%d %d\n",b.size(),c.size());for(int i=0;i<b.size();++i)printf("%d ",b[i]);printf("\n");for(int i=0;i<c.size();++i)printf("%d ",c[i]);printf("\n");}}return 0;
}

B. Olya and Game with Arrays

在这里插入图片描述

题目大意

给你若干的数组,每一个数组里面至少会有两个数,现在对每一个数组都进行一次操作或者是不操作,在数组里选择一个数移动到其他的数组里面,最后每一个数组取最小值相加,求和的最大值
翻译:

阿尔乔姆向女孩奥利娅建议玩一个游戏。存在一个包含n个数组的列表,其中第i个数组包含mi≥2个正整数ai1, ai2,…,ai.mi。

Olya最多可以将一个整数(可能为0)从一个数组移动到另一个数组。请注意,整数只能从一个数组中移动一次,但整数可以多次添加到一个数组中,并且所有移动都是同时完成的。

数组列表的美妙之处在于求和∑ni=1minmij=1ai,j。换句话说,对于每个数组,我们找到其中的最小值,然后将这些值相加。

游戏的目标是最大化数组列表的美感。帮助奥利亚赢得这个具有挑战性的游戏!

输入 每个测试由多个测试用例组成。第一行包含一个整数t(1≤t≤25000)——测试用例的数量。下面是测试用例的描述。

每个测试用例的第一行包含一个整数n(1≤n≤25000)——列表中的数组数。

后面是数组的描述。每个数组描述由两行组成。

第一行包含一个整数mi(2≤mi≤50000)——第i个数组中的元素数。

下一行包含mi个整数ai,1,ai,2,…,ai,mi(1≤ai,j≤109)-第i个数组的元素。

可以保证所有测试用例的mi之和不超过50000。

输出 对于每个测试用例,输出包含单个整数的单行—这是Olya可以实现的数组列表的最大美感。

思路

每一个数组都可以选择移动或者是不移动,所以这个数组中最后能参与最后的最小值相加的数字只有可能是最小值或者是次小值(也就是第二小的数)要想把最后的值尽量变大,我们就优先把所有的最小值拿出来,放到一个数组里面,尽可能的使得每一个数组的次小值参与求和运算,最后最小值们都放到一个数组里面,我们找一个次小值里面最小的一个数组,放下所有的最小值即可。

代码

#include<iostream>
#include<bits/stdc++.h>
#include<vector>
using namespace std;int main()
{int t;cin>>t;while(t--){int n;scanf("%d",&n);long long sum=0;int zongminzhi1=INT_MAX;int zongminzhi2=INT_MAX;for(int i=0;i<n;++i){int minzhi1=INT_MAX,minzhi2=INT_MAX;int k;scanf("%d",&k);for(int j=0;j<k;++j){int shuru;scanf("%d",&shuru);if(shuru<=minzhi1){minzhi2=minzhi1;minzhi1=shuru;}else if(shuru<=minzhi2){minzhi2=shuru;}}zongminzhi1=min(minzhi1,zongminzhi1);zongminzhi2=min(minzhi2,zongminzhi2);sum+=minzhi2;}printf("%lld\n",sum+zongminzhi1-zongminzhi2);}return 0;
}

C. Another Permutation Problem

在这里插入图片描述

题目大意

给你一个数n,在n的全排列中找到一个能够使得(∑ni=1=p i ⋅i)−(maxnj=1p j ⋅j)的值最大。
翻译:

安德烈刚刚开始出现问题,这对他来说很困难。这就是为什么他提出了一个关于排列的奇怪问题,并让你去解决它。你能做到吗?

让我们把长度为n的排列的代价称为表达式的值:

(∑ni=1=p i ⋅i)−(maxnj=1p j ⋅j)。找出长度为n的所有排列的最大代价。

长度为n的排列是由n个不同的整数以任意顺序从1到n组成的数组。例如,[2,3,1,5,4]是一个排列,但[1,2,2]不是一个排列(2在数组中出现两次),[1,3,4]也不是一个排列(n=3,但数组中有4)。

输入 每个测试由多个测试用例组成。第一行包含一个整数t(1≤t≤30)——测试用例的数量。下面是测试用例的描述。

每个测试用例的唯一一行包含一个整数n(2≤n≤250)——排列的长度。

可以保证所有测试用例的总和不超过500。

输出 对于每个测试用例,输出一个整数——长度为n的所有排列中的最大代价。

思路

通过打表发现所有的最大值都是发生在前面部分正序,后面一部分倒序的排序方法,比如说
n=2时,最大:2 1
n=3时,最大:1 3 2
n=4时,最大:1 2 4 3
n=5时,最大:1 2 5 4 3
n=6时,最大:1 2 3 6 5 4
n=7时,最大:1 2 3 4 7 6 5
n=8时,最大:1 2 3 4 8 7 6 5

以下是打板的代码:

#include<iostream>
#include<bits/stdc++.h>
#include<vector>
using namespace std;int main()
{int t=10;for(int k=1;k<t;++k){int maxzhi0=0;{cout<<"n=="<<k<<endl;int a[200]{0};int n=k;for(int i=1;i<=n;++i){a[i]=i;}int b[200]{0};do{long long sum=0;int maxzhi=INT_MIN;for(int i=1;i<=n;++i){sum+=a[i]*i;maxzhi=max(maxzhi,a[i]*i);}if(maxzhi0<sum-maxzhi){maxzhi0=sum-maxzhi;for(int i=0;i<200;++i)b[i]=a[i];}}while(next_permutation(a+1, a+n+1));cout<<"max="<<maxzhi0<<endl;for(int i=1;i<=n;++i)cout<<b[i]<<' ';cout<<endl;printf("***********\n");}}return 0;
}

找到大致的规律之后只需要一个O(n)的枚举就好了,因为不知道最后的目标值大概是需要倒转多少个数字,直接暴力枚举

代码

#include<iostream>
#include<bits/stdc++.h>
#include<vector>
using namespace std;int main()
{int t;cin>>t;while(t--){int n;scanf("%d",&n);long long ans=0;long long zong=0;for(int i=1;i<=n;++i){int maxzhi=0;ans=0;for(int j=1;j<=n-i;++j){ans+=j*j;maxzhi=max(maxzhi,j*j);}for(int j=n;j>=n-i+1;--j){ans+=j*(n-i+1+(n-j));maxzhi=max(maxzhi,j*(n-i+1+(n-j)));}ans-=maxzhi;zong=max(ans,zong);}cout<<zong<<endl;}return 0;
}

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

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

相关文章

大数据-玩转数据-Flink RedisSink

一、添加Redis Connector依赖 具体版本根据实际情况确定 <dependency><groupId>org.apache.flink</groupId><artifactId>flink-connector-redis_2.11</artifactId><version>1.1.5</version> </dependency>二、启动redis 参…

使用KETTLE工具在Oracle和Dm8之间迁移数据

oracle 代码测试数据 CREATE TABLE PRODUCT_CATEGORY ( PRODUCT_CATEGORYID NUMBER(11,0) NOT NULL , NAME VARCHAR2(255) NOT NULL ENABLE, PRIMARY KEY (PRODUCT_CATEGORYID) )INSERT ALL into PRODUCT_CATEGORY(PRODUCT_CATEGORYID, NAME)VALUES(2,国学) into PRODUCT_CATEG…

Qt开发技术:Q3D图表开发笔记:Q3DSurface三维曲面图介绍、Demo以及代码详解

前言 qt提供了q3d进行三维开发&#xff0c;虽然这个框架没有得到大量运用也不是那么成功&#xff0c;性能上也有很大的欠缺&#xff0c;但是普通的点到为止的应用展示还是可以的。   其中就包括华丽绚烂的三维图表&#xff0c;数据量不大的时候是可以使用的。   前面介绍了…

win10电脑右下角不显示电脑图标,但是能正常上网,怎么解决?

一、问题描述 win10系统更新后&#xff0c;电脑右下角不显示小电脑图标&#xff0c;但是能正常上网&#xff0c;而且用命令测试时显示的是192打头的网址。 二、解决方法 运行命令提示符窗口&#xff0c;在命令提示符中输入&#xff1a;netsh winsock reset&#xff08; 如果提示…

学习pytorch 3 tensorboard的使用

tensorboard的使用 1. 安装2. add_scalar 查看函数图形3. 查看结果4. add_image() 查看训练步骤中间结果的图片 1. 安装 pytorch conda环境 pip install tensorboard pip install opencv-python2. add_scalar 查看函数图形 常用来查看 train val loss等函数图形 from torch…

第57步 深度学习图像识别:CNN可视化(Pytorch)

基于WIN10的64位系统演示 一、写在前面 由于不少模型使用的是Pytorch&#xff0c;因此这一期补上基于Pytorch实现CNN可视化的教程和代码&#xff0c;以SqueezeNet模型为例。 二、CNN可视化实战 继续使用胸片的数据集&#xff1a;肺结核病人和健康人的胸片的识别。其中&…

Java整合Selenium录制视频

捕捉视频 有时候我们未必能够分析故障只需用日志文件或截图的帮助。有时捕获完整的执行视频帮助。让我们了解如何捕捉视频。 我们将利用Monte媒体库的执行相同。 配置 第1步&#xff1a;导航到URL下载屏幕记录JAR&#xff0c;如下图所示。 http://www.randelshofer.ch/monte…

day24-106.从中序与后序遍历序列构造二叉树

106.从中序与后序遍历序列构造二叉树 力扣题目链接(opens new window) 根据一棵树的中序遍历与后序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如&#xff0c;给出 中序遍历 inorder [9,3,15,20,7]后序遍历 postorder [9,15,7,20,3] 返回如下的二叉树&am…

如何在win10系统上使用旧版本的IE浏览器

win10系统打开IE浏览器自动变成了Edge浏览器&#xff0c;切换成IE模式时&#xff0c;IE浏览器的版本默认为IE11&#xff08;注&#xff1a;Edge浏览器只支持IE11&#xff09;&#xff0c;有些网站只能使用IE浏览器打开或者在做一些兼容性测试时&#xff0c;需要使用到不同版本的…

PLC求解弹簧质量模型微分方程数值解(RK4梯形图程序)

微分方程的数值求解,属于数学分析类课程涉及的内容。大家可以参看相关书籍对Runge-Kutta法的介绍,弹簧质量阻尼模型详细的微分方程介绍可以查看下面文章,链接如下: 弹簧质量阻尼系统前馈PID位置控制(PLC闭环仿真SCL+ST代码)_RXXW_Dor的博客-CSDN博客带前馈控制的博途PID程…

【数据结构•堆】堆排序(理论基础)

堆的定义  • 堆是一个完全二叉树   –所有叶子在同一层或者两个连续层   –最后一层的结点占据尽量左的位置  • 堆性质   –为空, 或者最小元素在根上   –两棵子树也是堆 存储方式  • 最小堆的元素保存在heap[1..hs]内   – 根在heap[1]   –K的左儿子是2k,…

在线吉他调音

先看效果&#xff08;图片没有声&#xff0c;可以下载源码看看&#xff0c;比这更好~&#xff09;&#xff1a; 再看代码&#xff08;查看更多&#xff09;&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8&quo…

【Unity】VS Code 没有智能提示 Unity 中的类

正常来说&#xff0c;VS Code中会对部分输入类名进行提示&#xff0c;如下图所述 假如你从Unity 中进入 VS Code后发现没有提示相关 Unity的类&#xff0c;可能是 Unity 中 有关于 VS Code的相关Package 没有跟着 VS Code升级到最新版本。 点击Unity Windows 下拉框中的 Pac…

基于Promise.resolve实现Koa请求队列中间件

本文作者为360奇舞团前端工程师 前言 最近在做一个 AIGC 项目&#xff0c;后端基于 Koa2 实现。其中有一个需求就是调用兄弟业务线服务端 AIGC 能力生成图片。但由于目前兄弟业务线的 AIGC 项目也是处于测试阶段&#xff0c;能够提供的服务器资源有限&#xff0c;当并发请求资源…

直播带货热潮:海外网红直播对产品推广的影响与机遇

随着互联网的快速发展和社交媒体的普及&#xff0c;直播带货成为了一种风靡全球的新型营销方式。其中&#xff0c;海外网红直播作为直播带货的一种形式&#xff0c;引起了广泛的关注。海外网红以其独特的个人魅力和粉丝基础&#xff0c;成为了产品推广的强有力渠道。本文Nox聚星…

SpringBoot 异步、邮件任务

异步任务 创建一个Hello项目 创建一个类AsyncService 异步处理还是非常常用的&#xff0c;比如我们在网站上发送邮件&#xff0c;后台会去发送邮件&#xff0c;此时前台会造成响应不动&#xff0c;直到邮件发送完毕&#xff0c;响应才会成功&#xff0c;所以我们一般会采用多线…

JVM 调优实例

点击下方关注我&#xff0c;然后右上角点击...“设为星标”&#xff0c;就能第一时间收到更新推送啦~~~ JVM提供了多种垃圾回收器&#xff0c;可以根据应用程序的需求选择最适合的垃圾回收器。例如&#xff0c;如果应用程序需要更快的响应时间&#xff0c;可以选择并行垃圾回收…

从源代码编译构建Apach Spark3.2.4

从源代码编译构建Apach Spark3.2.4 编译说明编译Apache Spark下载源码构建环境准备使用本地Maven构建更改Scala版本下载Jar包构建可运行的发行版构建异常构建成功 运行测试 编译说明 对于大多数用户来说&#xff0c;使用官方预编译版本的Spark已经足够满足日常需求。只有在特定…

FFmpeg常见命令行(四):FFmpeg流媒体

前言 在Android音视频开发中&#xff0c;网上知识点过于零碎&#xff0c;自学起来难度非常大&#xff0c;不过音视频大牛Jhuster提出了《Android 音视频从入门到提高 - 任务列表》&#xff0c;结合我自己的工作学习经历&#xff0c;我准备写一个音视频系列blog。本文是音视频系…

10.Eclipse配置Tomcat详细教程、如何使用Eclipse+tomcat创建并运行web项目

一、Tomcat的下载官网 -> 进入官网显示如图所示的界面&#xff0c;在下下载的是Tomcat9.0版本&#xff0c;你可以自己选一款 点击然后进入下面这个界面 最好是在你的D盘建立一个文件夹&#xff0c;把它解压在里面&#xff0c;文件夹名自己来吧&#xff0c;自己能知道里面装…