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

[蓝桥杯]花束搭配【算法赛】

https://www.lanqiao.cn/problems/20268/learning/?page=1&first_category_id=1&sort=students_count&asc=0&status=1&difficulty=30&tags=%E4%BA%8C%E5%88%86&tag_relation=intersection

题意

n朵花 每朵花有两个属性a,b

如果两朵花满足 a i + a j > b i + b j a_i+a_j>b_i+b_j ai+aj>bi+bj 就称为完美方案

求一共有多少种完美方案

( i , j ) 与 ( j , i ) (i,j)与(j,i) (i,j)(j,i)视为不同组合

思路

数据范围 1 ≤ n ≤ 2 × 1 0 5 1\leq n\leq2\times10^5 1n2×105 推测本题的做法是 O ( n l o g n ) O(nlogn) O(nlogn)

要用到排序或者优先队列


等价变形:

a i + a j > b i + b j ⇔ a i + a j − b i − b j a_i+a_j>b_i+b_j \Leftrightarrow a_i+a_j-b_i-b_j ai+aj>bi+bjai+ajbibj

开一个d数组 记录 a i − b i a_i-b_i aibi 然后排序 ➕ 双指针遍历

Code

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define pii pair<int,int>
#define ar2 array<int,2>
#define ar3 array<int,3>
#define ar4 array<int,4>
#define endl '\n'
void cmax(int &a,int b){a=max(a,b);};
void cmin(int &a,int b){a=min(a,b);};
const int N=2e5+10,MOD=1e9+7,INF=0x3f3f3f3f;const long long LINF=LLONG_MAX;const double eps=1e-6;
int a[N];

void solve(){
    int n;cin>>n;
    vector<int>a(n),b(n);

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

    vector<int>d(n);
    for(int i=0;i<n;i++) d[i]=a[i]-b[i];
    sort(d.begin(),d.end());

    int ans=0;
    int l=0,r=n-1;
    while(l<r){
        if(d[l]+d[r]>0){//此时[l,r-1]这r-l个数都能跟r组成一对 
            ans+=r-l;
            r--;
        }else l++;

    }
    cout<<(ans<<1)<<endl;//每一对可以前后互换位置 所以要乘二
}

signed main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr),cout.tie(nullptr);
    
    int T=1;
    // cin>>T;
    while(T--) solve();
}

相关文章:

  • Ubuntu从源码安装Webots
  • 网络编程、URI和URL的区别、TCP/IP协议、IP和端口、URLConnection
  • MySQL相关参数
  • 【C++多线程】thread
  • SDL3 游戏开发 Windows 环境搭建
  • 介绍如何使用YOLOv8模型进行基于深度学习的吸烟行为检测
  • Matlab 矢量控制和SVPWM的感应电机控制
  • 算法——图论——关键活动
  • Blender插件NodeWrangler导入贴图报错解决方法
  • Docker生存手册:安装到服务一本通
  • Razor C# 变量
  • 数据结构(全)
  • 机器学习 [白板推导](二)[线性回归]
  • 第四章-PHP文件包含
  • JavaScript性能优化的12种方式
  • 【开原宝藏】30天学会CSS - DAY1 第一课
  • SOA(面向服务架构)与微服务架构的区别与联系
  • GreenKGC: A Lightweight Knowledge Graph Completion Method(论文笔记)
  • 开发一个go模块并在其他项目中引入
  • Python学习第十八天
  • 微网站如何做微信支付宝支付宝支付宝/网店seo排名优化
  • 网页代码查看/qq群怎么优化排名靠前
  • danbold做动漫的网站/百度竞价推广一个月多少钱
  • ecshop二次开发/关键词在线优化
  • 如何做网站的seo/数据查询网站
  • 微信开放品牌/网站建设seo