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

SMU winter 2025 Personal Round 2

Problem - D - Codeforces

思路:

//在给定数中取x,y,z使得(x-y)^2+(y-z)^2+(z-x)^2最值.
//容易发现是找最接近的三个数字,但是怎么找呢
//经验总结(没想到是枚举中间那个),其中一个数字是枚举的(总是枚举中间那个,对于这个题中间那个就是中间大那个).剩下两个数字呢?--可以二分
//假设 x <= y <= z ; 那么可以枚举y,二分x和z;要在三个序列中都枚举y,并且x,z也要枚举两次.
//一共是3*n*2*logn次

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define endl "\n"
#define sz(x) (int)x.size()
#define e emplace_back

int n[4];
int arr[4][100005];
int cal(int x,int y,int z){ return (x-y)*(x-y)+(y-z)*(y-z)+(z-x)*(z-x); }
int process(int i1,int i2,int i3){
    int res=LONG_LONG_MAX;
    for(int i=1;i<=n[i1];i++){
        int y=arr[i1][i];
        auto x1=upper_bound(arr[i2]+1,arr[i2]+n[i2]+1,y);
        auto y1=lower_bound(arr[i2]+1,arr[i2]+n[i2]+1,y);
        auto x2=upper_bound(arr[i3]+1,arr[i3]+n[i3]+1,y);
        auto y2=lower_bound(arr[i3]+1,arr[i3]+n[i3]+1,y);
        if(x1!=arr[i2]+1&&y2!=arr[i3]+n[i3]+1){
            int x=*prev(x1);
            int z=*y2;  //不用next
            res=min(res,cal(x,y,z));
        }
        if(x2!=arr[i3]+1&&y1!=arr[i2]+n[i2]+1){
            int x=*prev(x2);
            int z=*y1;  //不用next
            res=min(res,cal(x,y,z));
        }
    }
    return res;
}
//在给定数中取x,y,z使得(x-y)^2+(y-z)^2+(z-x)^2最值.
//容易发现是找最接近的三个数字,但是怎么找呢
//经验总结(没想到是枚举中间那个),其中一个数字是枚举的(总是枚举中间那个,对于这个题中间那个就是中间大那个).剩下两个数字呢?--可以二分
//假设 x <= y <= z ; 那么可以枚举y,二分x和z;要在三个序列中都枚举y,并且x,z也要枚举两次.
//一共是3*n*2*logn次
void solve(){       //D
    cin>>n[1]>>n[2]>>n[3];
    for(int i=1;i<=3;i++){
        for(int j=1;j<=n[i];j++){
            cin>>arr[i][j];
        }
        sort(arr[i]+1,arr[i]+n[i]+1);
    }
    int ans=LONG_LONG_MAX;
    ans=min(ans,process(1,2,3));
    ans=min(ans,process(2,1,3));
    ans=min(ans,process(3,1,2));
    cout<<ans<<endl;
}

int32_t main() {
    ios::sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr);
    int t=1;
    cin>>t;
    while(t--){
        solve();
    }
    return 0;
}


http://www.kler.cn/a/536104.html

相关文章:

  • 当代编程语言的新思路:废除独立关键字,使用时加标志
  • 【大数据技术】搭建完全分布式高可用大数据集群(Scala+Spark)
  • 路由器如何进行数据包转发?
  • 快速对QWen2.5大模型进行微调
  • 如何利用Python爬虫获取商品销量详情:应对eBay反爬策略的实战指南与代码示例
  • 计算机毕业设计hadoop+spark+hive民宿推荐系统 酒店推荐系统 民宿价格预测 酒店价预测 机器学习 深度学习 Python爬虫 HDFS集群
  • RabbitMQ:windows最新版本4.0.5安装方案
  • Rust unresolved import `crate::xxx` 报错解决
  • C++11—可变参数模板
  • 【CS61A 2024秋】Python入门课,全过程记录P6(Week12 Interpreters开始,更新于2025/2/7)
  • 【HarmonyOS NEXT】设备显示白屏 syswarning happended in XXX
  • C++ 类和对象 详细版(上)
  • PT2021K 单触控同步输出 IC
  • Python爬虫-如何正确解决起点中文网的无限debugger
  • CF 278A.Circle Line
  • Python中__init__.py文件的作用
  • GitPuk快速安装配置教程(入门级)
  • c# Lazy<T>单例模式 - 延迟初始化单例实例示例与详解
  • Android GPS功耗优化思考点
  • 【Leetcode 热题 100】136. 只出现一次的数字
  • ControlNet 风格迁移介绍
  • 【R语言】apply函数族
  • mysql优化-升级8.0服务启动失败
  • 250207-MacOS修改Ollama模型下载及运行的路径
  • python编程-内置函数 bytes() , bytearray()详解
  • 微服务架构中的事件驱动设计:使用 Kafka 和 Apache Pulsar 实现高效的事件流管理