当前位置: 首页 > news >正文

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.lryc.cn/news/275934.html

相关文章:

  • 【Python机器学习】理论知识:决策树
  • 天软特色因子看板 (2024.01 第2期)
  • java智慧医院互联网智慧3D导诊系统源码,经由智慧导诊系统多维度计算,准确推荐科室
  • WiFi7: MLD寻址
  • laravel-admin之 浏览器自动填充密码(如果需要渲染数据库密码的话,首先确认数据库密码是否可以逆向解密)
  • jquery图形验证码
  • dp专题10 目标和
  • 详解 docker 镜像制作的两种方式
  • selenium元素单击不稳定解决方法
  • vue3中vite使用sass
  • centos 8.0 安装sysbench 1.0.17
  • LabVIEW开发分布式光纤油气管道泄漏检测及预警系统
  • Go后端开发 -- Go Modules
  • 基于det_keypoint_unite的ROS功能包(jetson部署)
  • TS 36.211 V12.0.0-下行(8)-调制和上变频
  • 基于SSM酒店后台管理系统【源码】【最详细运行文档】
  • 利用Python实现每日新闻早报推送
  • 图像分割-Grabcut法
  • 性能测试浅谈
  • 媒体运营常用的ChatGPT通用提示词模板
  • Java学习苦旅(二十一)——泛型
  • 具备闭环思维的测试才更充分
  • flask web学习之模板(一)
  • RedisInsight - Redis官方可视化工具
  • Matlab定义函数计算斐波那契数列
  • 计算机网络面试题总结
  • 视频转为序列图的软件,让视频批量转为序列图
  • 目标检测中的常见指标
  • QT上位机开发(会员充值软件)
  • 小程序实现绘制图片 保存到手机