CF1909_C. Heavy Intervals题解

CF1909_C. Heavy Intervals题解

题目传送门(Problem - C - CodeforcesCodeforces. Programming competitions and contests, programming communityicon-default.png?t=N7T8https://codeforces.com/contest/1909/problem/C)。

题目翻译如下:(图片来源:洛谷)

这题已经出的很直了……可能也有暴力做法,大家可以尝逝,我直接将数论方法。

先给亿点前置芝士(排序不等式):

通俗来讲,就是对于两个有序序列,顺序之积之和大于等于乱序之积之和大于逆序之积之和。

我都知道你们在想什么,下面来到了大家喜闻乐见的Ctrl+C/V环节,AC Code走起!

#include<bits/stdc++.h>
#define N 110000
using namespace std;
multiset<int>tl={};
int a[N]={},c[N]={},l[N]={},r[N]={},n=0,t=0;
int main(){
    scanf("%d",&t);
    while(t--){
        scanf("%d",&n);
        tl.clear();
        for(int i=1;i<=n;i++){
            scanf("%d",&l[i]);
            tl.insert(l[i]);
        }
        for(int i=1;i<=n;i++){
            scanf("%d",&r[i]);
        }
        for(int i=1;i<=n;i++){
            scanf("%d",&c[i]);
        }
        sort(r+1,r+1+n);
        for(int i=1;i<=n;i++){
            auto id=tl.lower_bound(r[i]);
            id--;
            a[i]=r[i]-(*id);
            tl.erase(id);
        }
        sort(a+1,a+1+n);
        sort(c+1,c+1+n);
        long long ans=0;
        for(int i=1;i<=n;i++){
            ans+=a[i]*1LL*c[n-i+1];
        }
        printf("%lld\n",ans);
    }
    return 0;
}

感谢我这个大好人!没登录的人也可以复制哦!

#include<bits/stdc++.h>
#define N 110000
using namespace std;
multiset<int>tl={};
int a[N]={},c[N]={},l[N]={},r[N]={},n=0,t=0;
int main(){scanf("%d",&t);while(t--){scanf("%d",&n);tl.clear();for(int i=1;i<=n;i++){scanf("%d",&l[i]);tl.insert(l[i]);}for(int i=1;i<=n;i++){scanf("%d",&r[i]);}for(int i=1;i<=n;i++){scanf("%d",&c[i]);}sort(r+1,r+1+n);for(int i=1;i<=n;i++){auto id=tl.lower_bound(r[i]);id--;a[i]=r[i]-(*id);tl.erase(id);}sort(a+1,a+1+n);sort(c+1,c+1+n);long long ans=0;for(int i=1;i<=n;i++){ans+=a[i]*1LL*c[n-i+1];}printf("%lld\n",ans);}return 0;
}

当然登录了是更快捷的。

时间复杂度O(n*log(n)),完全能过。

代码有亿点长,说点注意事项:

①long long问题。

②lower_bound要用multiset里封装的,不要用单独的函数(这样会退化成O(n))。

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

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

相关文章

【云原生】Docker学习笔记

安装docker 系统信息&#xff1a; passnightpassnight-s600:/etc/apt/trusted.gpg.d$ cat /etc/os-release PRETTY_NAME"Ubuntu 22.04.1 LTS" NAME"Ubuntu" VERSION_ID"22.04" VERSION"22.04.1 LTS (Jammy Jellyfish)" VERSION_COD…

面向对象的三大特征之一多态

多态 概念 多态是同一个对象&#xff0c;在不同时刻表现出来不同的形态&#xff0c;称之为多态。 例如&#xff1a;水&#xff0c;我们把水理解成为一个对象&#xff0c;而水会有不同的形态&#xff0c;比如 液态水、冰块、水蒸气 多态的前提 有继承/实现关系&#xff08;继承…

【大数据进阶第二阶段之Hadoop学习笔记】Hadoop 概述

【大数据进阶第二阶段之Hadoop学习笔记】Hadoop 概述-CSDN博客 【大数据进阶第二阶段之Hadoop学习笔记】Hadoop 运行环境搭建-CSDN博客 【大数据进阶第二阶段之Hadoop学习笔记】Hadoop 运行模式-CSDN博客 1、 Hadoop 是什么 &#xff08;1&#xff09;Hadoop是一个由Apache基…

全屏字幕滚动APP:12月份广告总收:84.89元(2023年12月份) 穿山甲SDK接入收益·android广告接入·app变现·广告千展收益·eCPM收益

接入穿山甲SDK app示例&#xff1a; android 数独小游戏 经典数独休闲益智 广告接入示例: Android 个人开发者如何接入广告SDK&#xff0c;实现app流量变现 2023年12月份&#xff0c;总新增用户1242 友盟统计&#xff1a; 12月份&#xff1a;总新增用户1242 2023年12月份…

OpenCV-15位运算

OpenCV中的逻辑运算就是对应位置的元素进行与、或、非和异或。 Opencv与Python不同的是&#xff1a;OpenCV中0的非反过来是255&#xff0c;255反过来是0。 但是Python中255非为-256。 一、非运算 使用API---cv.bitwise_not(str) 示例代码如下&#xff1a; import cv2 imp…

QT_01 安装、创建项目

QT - 安装、创建项目 1. 概述 1.1 什么是QT Qt 是一个跨平台的 C图形用户界面应用程序框架。 它为应用程序开发者提供建立艺术级图形界面所需的所有功能。 它是完全面向对象的&#xff0c;很容易扩展&#xff0c;并且允许真正的组件编程。 1.2 发展史 1991 年 Qt 最早由奇…

idea 弹框提示:Server‘s certificate is not trusted 解决办法

如图所示&#xff1a; 引起这个的根本原因:是因为你破解了idea&#xff0c;在本地hosts配置了映射&#xff0c;然后idea检测出来弹出警告 服务器证书不可用。所以在弹出这个框。 解决方法&#xff1a; 打开idea--->File-->Settings-->Tools-->点击Server Certifi…

新一代爬取JavaScript渲染页面的利器-playwright(一)

Playwright的使用 Playwright是微软在2020年初开源的一款新一代自动化测试工具&#xff0c;其功能和**Selenium**、Pyppeteer类似&#xff0c;都可以驱动浏览器进行自动化操作&#xff0c;但是也具备了Selenium、Pyppeteer不具备的更好的API&#xff0c;是新一代爬取JavaScrip渲…

SpringBoot日志打印Logback详解【子节点详解】【附案例】

笑小枫的专属目录 1. 背景2. 什么是Logback3. SpringBoot使用logback介绍4. 自定义logback配置5. 如何把日志同步到ES中6. logback配置属性详解根节点< configuration>子节点:< property>子节点:< appender>filetargetappendprudentlayout和encoderlayout和e…

【KingbaseES】实现MySql函数Field

CREATE OR REPLACE FUNCTION field(value TEXT, VARIADIC arr TEXT[]) RETURNS INT AS $$ DECLAREi INT; BEGINFOR i IN 1 .. array_length(arr, 1) LOOPIF arr[i] value THENRETURN i;END IF;END LOOP;RETURN 0; END; $$ LANGUAGE plpgsql IMMUTABLE;

使用qtquick调用python程序

一. 内容简介 使用qtquick调用python程序 二. 软件环境 2.1vsCode 2.2Anaconda version: conda 22.9.0 2.3pytorch 安装pytorch(http://t.csdnimg.cn/GVP23) 2.4QT 5.14.1 新版QT6.4,&#xff0c;6.5在线安装经常失败&#xff0c;而5.9版本又无法编译64位程序&#xf…

【DevOps-02】Code编码阶段工具

一、简要说明 在code阶段,我们需要将不同版本的代码存储到一个仓库中,常见的版本控制工具就是SVN或者Git,这里我们采用Git作为版本控制工具,GitLab作为远程仓库。 Git安装安装GitLab配置GitLab登录账户二、Git安装 Git官网 Githttps://git-scm.com/