Codeforces Round 916 (Div. 3) D 题 Three Activities

news2024/11/15 13:54:35

题目描述

Winter holidays are coming up. They are going to last for nn days.

During the holidays, Monocarp wants to try all of these activities exactly once with his friends:

  • go skiing;
  • watch a movie in a cinema;
  • play board games.

Monocarp knows that, on the i -th day, exactly ai​ friends will join him for skiing, bi​ friends will join him for a movie and cici​ friends will join him for board games.

Monocarp also knows that he can't try more than one activity in a single day.

Thus, he asks you to help him choose three distinct days x,y,z in such a way that the total number of friends to join him for the activities ( ax+by+cz​ ) is maximized.

输入格式

The first line contains a single integer t ( 1≤t≤104 ) — the number of testcases.

The first line of each testcase contains a single integer n ( 3≤n≤105 ) — the duration of the winter holidays in days.

The second line contains nn integers a1,a2,…,an​ ( 1≤ai≤108 ) — the number of friends that will join Monocarp for skiing on the i -th day.

The third line contains nn integers b1,b2,…,bn​ ( 1≤bi≤108 ) — the number of friends that will join Monocarp for a movie on the i -th day.

The fourth line contains nn integers c1,c2,…,cn ( 1≤ci≤108 ) — the number of friends that will join Monocarp for board games on the i -th day.

The sum of n over all testcases doesn't exceed 105 .

输出格式

For each testcase, print a single integer — the maximum total number of friends that can join Monocarp for the activities on three distinct days.

题意翻译

给定三个数组 a,b,c,找三个互不相同的整数 i,j,k,使得 ai+bj+ck 的值最大。

输入输出样例

输入 #1复制

4
3
1 10 1
10 1 1
1 1 10
4
30 20 10 1
30 5 15 20
30 25 10 10
10
5 19 12 3 18 18 6 17 10 13
15 17 19 11 16 3 11 17 17 17
1 17 18 10 15 8 17 3 13 12
10
17 5 4 18 12 4 11 2 16 16
8 4 14 19 3 12 6 7 5 16
3 4 8 11 10 8 10 2 20 3

输出 #1复制

30
75
55
56

说明/提示

In the first testcase, Monocarp can choose day 2 for skiing, day 1 for a movie and day 3 for board games. This way, a2=10 friends will join him for skiing, b1=10 friends will join him for a movie and c3=10 friends will join him for board games. The total number of friends is 30.

In the second testcase, Monocarp can choose day 1 for skiing, day 4 for a movie and day 2 for board games. 30+20+25=75 friends in total. Note that Monocarp can't choose day 1 for all activities, because he can't try more than one activity in a single day.

In the third testcase, Monocarp can choose day 2 for skiing, day 3 for a movie and day 7 for board games. 19+19+17=55 friends in total.

In the fourth testcase, Monocarp can choose day 1 for skiing, day 4 for a movie and day 9 for board games. 17+19+20=56 friends in total.


思路:

只要是不同的三天就可以,这样的话,我们只需要将a中人数由大到小的下标取前3,b中人数由大到小取前3,c中从大到小取前3,然后枚举,一共是 3^{3} 种情况其中再去掉一些重复的,为什么要取前3呢,假设说a这项活动把第一天占用了,对于b这项活动,第一天不能用了,还有第二大和第三大,对于c这项活动如果它的前两大的下标都和a,b重复了,他还可以取第三大,因此几乎总是可以取每个数组中的最大值。而当你不能取最大值时,就不需要考虑很多较小的数字。特别是,只需考虑每个数组中最大的三个数即可。


代码实现:
 

#include<bits/stdc++.h>

using namespace std;

void solve()
{
    int n;
    cin>>n;

    vector<int> a(n),b(n),c(n);

    for(int i=0;i<n;i++)
    {
        cin>>a[i];
    }

    for(int i=0;i<n;i++)
    {
        cin>>b[i];
    }

    for(int i=0;i<n;i++)
    {
        cin>>c[i];
    }

    vector<int> pa(n),pb(n),pc(n);

    iota(pa.begin(),pa.end(),0);
    iota(pb.begin(),pb.end(),0);
    iota(pc.begin(),pc.end(),0);

    sort(pa.begin(),pa.end(),
         [&](int i,int j)
         {
             return a[i]>a[j];
         });
    sort(pb.begin(),pb.end(),
         [&](int i,int j)
         {
             return b[i]>b[j];
         });
    sort(pc.begin(),pc.end(),
         [&](int i,int j)
         {
             return c[i]>c[j];
         });

    int ans=0;

    for(int i=0;i<3;i++)
    {
        for(int j=0;j<3;j++)
        {
            for(int k=0;k<3;k++)
            {
                int x=pa[i],y=pb[j],z=pc[k];
                if(x!=y && x!=z && y!=z)
                {
                    ans=max(ans,a[x]+b[y]+c[z]);
                }
            }
        }
    }

    cout<<ans<<endl;
}

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int t;
    cin>>t;

    while(t--)
    {
        solve();
    }
    return 0;
}

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

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

相关文章

Mysql主从脚本

注意&#xff1a;先执行从服务器的脚本&#xff0c;再执行主服务器脚本 执行脚本时&#xff0c;务必使用source 脚本名称执行脚本 两个脚本都运行完之后 主服务器配置 从服务器配置

Machine-Learning 机器学习

目录 基本概念与分类 工作原理 应用领域 发展趋势 机器学习中的深度学习是如何工作的&#xff0c;以及它如何影响其他机器学习算法&#xff1f; 在机器学习中&#xff0c;哪些特定的数据预处理技术最有效&#xff0c;特别是在处理大规模数据集时&#xff1f; 强化学习在…

DatenLord前沿技术分享 No.40

达坦科技始终致力于打造高性能 Al Cloud 基础设施平台&#xff0c;积极推动AI应用的落地。达坦科技通过软硬件深度融合的方式&#xff0c;提供高性能存储和高性能网络。为 AI 应用提供弹性、便利、经济的基础设施服务&#xff0c;以此满足不同行业客户对 AICloud 的需求。 在本…

AI全息手术:未来医疗的奇迹,你准备好了吗?

想象一下&#xff0c;未来的手术室中&#xff0c;医生们不再依赖二维的X光片或CT扫描&#xff0c;而是通过空中悬浮的三维全息影像&#xff0c;直观地观察和操作人体内部结构。这并非科幻电影中的场景&#xff0c;而是正在成为现实的AI全息影像手术技术。 手术室中的三维魔法 传…

SOEM 源码解析 ecx_eeprom_waitnotbusyAP

/* 在超时时间内、设置EEprom 状态机忙位busy→idle、APRD方法* param[in] context context struct* 上下文结构体* param[in] aiadr auto increment address of slave* 从站自增地址* param[in] timeout …

Java数据结构 | 树的常见习题一(考研题、面试题)

树的常见练习题一 1、一棵非空的二叉树的先序遍历序列与后序遍历序列正好相反&#xff0c;则该二叉树一定满足&#xff08; &#xff09;2、在一颗度为3的树中&#xff0c;度为3的结点有2个&#xff0c;度为2的结点有1个&#xff0c;度为1的结点有2个&#xff0c;则叶子结点有&…

全志平台串口编号更改记录 A133 T527 T133 A523 A527串口编号更改

总纲 android13 rom 开发总纲说明 目录 1.前言 2.问题分析 3. 情况讨论 4.代码修改 5.彩蛋 1.前言 在嵌入式开发中,更改串口编号是一种常见的操作,以满足特定的硬件配置或调试需求。根据我们之前的文章 android13 串口编号修改 串口名修改-CSDN博客 在全志平台下面使…

如何成为具有竞争力的智能电表厂家

要成为具有竞争力的智能电表厂家&#xff0c;需要在多个方面进行深入布局和持续优化。以下是从市场定位、技术创新、产品质量、销售策略、客户服务以及合作伙伴关系等六个方面进行的详细分析&#xff1a; 一、明确市场定位与目标 市场细分&#xff1a;智能电表厂家需要明确自己…

未发先火,Smartbi AIChat频频“出圈”

近日&#xff0c;思迈特正式官宣&#xff0c;将于8月8日线上新品发布会上推出自研的全新AI应用——Smartbi AIChat&#xff0c;这款应用在还未正式推向市场前&#xff0c;已获得媒体、分析机构等多方关注&#xff0c;热度飙升&#xff0c;思迈特软件及其新品再一次成为业界内外…

RabbitMq如何确保消息不丢失

问题&#xff1a;在生产环境中由于一些不明原因&#xff0c;导致 rabbitmq 重启&#xff0c;在 RabbitMQ 重启期间生产者消息投递失败&#xff0c;导致消息丢失&#xff0c;需要手动处理和恢复。于是&#xff0c;我们开始思考&#xff0c;如何才能进行 RabbitMQ 的消息可靠投递…

RLVF:避免过度泛化地从口头反馈中学习

人工智能咨询培训老师叶梓 转载标明出处 大模型在不同行业和个人中的广泛应用要求模型能够根据具体的用户反馈进行调整或定制&#xff0c;以满足细微的要求和偏好。虽然通过高层次的口头反馈来指定模型调整非常方便&#xff0c;例如“在给老板起草电子邮件时不要使用表情符号”…

Ubuntu 20.04 几种微信安装错误汇总,最后成功

1. wine 安装 参考 Ubuntu 20.04.2 LTS安装 最新版 微信&#xff08;wine&#xff09; 1.1 连网下载文件 在终端执行 winetricks riched20下载不了 W2KSP4_EN.EXE 和 InstMsiW.exe 两个文件 可以网页端下载&#xff0c;或者 wget https://web.archive.org/web/2000/https:…

MySQL——数据库的设计、事务、视图

文章目录 数据库的设计1.多表之间的关系2.实现关系3.数据库设计的范式 事务1.事务的基本介绍2.事务的四大特征ACID3.事务的隔离级别&#xff08;了解即可&#xff09; 视图1.什么是视图&#xff1f;2.视图创建及使用方法3.注意事项4.为什么使用视图 数据库的设计 1.多表之间的…

GIS,矢量瓦片加载速度优化

文章目录 一、前言二、矢量瓦片的基础知识三、矢量切片加载速度优化3.1 地图缩编3.2 矢量瓦片中的图层根据显示层级定制3.3 矢量瓦片中的图层字段要按需定制3.4 多个图层合并为矢量切片图层组发布 四、总结 一、前言 单个矢量瓦片的大小并没有固定的上限&#xff0c;这意味着在…

一款功能强大且完全免费的在线AI抠图工具,还可以制作证件照

适用于人像、宠物、汽车等物品的智能抠图。它利用先进的算法和发丝级AI技术&#xff0c;能够快速精准地完成图片背景移除&#xff0c;并提供透明背景、场景切换和证件照制作等多种增值服务。此外&#xff0c;还支持批量处理和多种图片格式&#xff0c;适合不同用户的需求。无论…

【xilinx】如何从 Vivado GUI 启用/禁用 IP Core container

问题描述 如何从 Vivado GUI 启用/禁用 IP 核容器&#xff1f; 解决方案 要通过 GUI 启用/禁用 2023.1 之前的 Vivado 版本中的 IP 核容器&#xff0c;请按照以下步骤操作&#xff1a; 选择设置 -> IP -> 使用核心容器 在 Vivado 2023.1 及更高版本中&#xff0c;请按照…

中国自动驾驶出租车冲击网约车市场

近年来&#xff0c;中国的自动驾驶技术迅速发展&#xff0c;对传统网约车市场构成了越来越大的冲击。随着科技巨头百度旗下的萝卜快跑等公司加速推广无人驾驶出租车&#xff0c;这一趋势引发了广泛的讨论和担忧。 自动驾驶技术的迅猛发展 中国自动驾驶行业正处于快速发展阶段&…

ComfyUI系列——新手安装ComfyUI,就是这么简单!

前言 比较Midjoury、WebUI和ComfyUI 在了解ComfyUI的时候&#xff0c;还有其它两款类似的产品&#xff0c;于是就搜集了一下资料&#xff0c;以下是Midjoury、WebUI&#xff08;通常指的是Stable Diffusion Web UI&#xff09;和ComfyUI三者之间的异同点对比表。 特性Midjou…

Linux系统通过安装docker容器部署mysql服务

一、查看主机内核版本&#xff0c;关闭防火墙相关信息 二、直接yum安装docker 安装的18.09版本&#xff0c;也可以rpm安装最新版 yum install docker # docker --version Docker version 18.09.0, build a8959d5三、安装完成直接启动并查看状态 systemctl start docker syst…

Linux内核编程(十二)热插拔

本文目录 一、知识点1. 热插拔概念2. 热插拔机制3. Netlink机制 二、内核发送uevent事件到用户空间1. kobject发送uevent事件2. udevadm命令查看★示例代码&#xff1a;★优化&#xff1a;完善kset_uevent_ops&#xff08;热插拔事件结构体&#xff09; 三、用户空间使用Netlin…