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

qoj2571 Aidana and Pita

题意

给出 \(n\) 个数 \(a_i\),你需要把这些数分成三组,使得每组之和的极差最小,给出方案。

\(3\le n\le 25,1\le a_i\le 10^7\)

思路

\(n\le 25\),考虑折半搜索。

发现 \(3^{13}\approx 10^6\),所以复杂度是对的。

于是问题就变为给出两个三元组集合 \((a_i,b_i,c_i),(a'_j,b'_j,c'_j)\),要求从两组集合中分别选出一个三元组使得 \((a_i+a'_j,b_i+b'_j,c_i+c'_j)\) 的极差最小。

容易发现只需要统计所有 \(a_i+a'_j\ge b_i+b'_j\ge c_i+c'_j\) 的集合,此时的极差为 \(a_i-c_i+a'_j-c'_j\)

\(x_i=a_i-b_i,y_i=b_i-c_i,x'_j=a'_j-b'_j,y'_j=b'_j-c'_j\),题目转换为给出两个二元组集合 \((x_i,y_i),(x'_j,y'_j)\),从两组集合中分别选出一个二元组满足 \(x_i\ge -x'_j,y_i\ge -y'_j\),且 \((x_i+y_i+x'_j+y'_j)\) 最小。

剩下的就简单了。将 \(x'_j,y'_j\) 取反,按照 \(x\) 为关键字将 \((x_i,y_i)\) 排序并遍历,找出最大的 \(x'_j+y'_j\) 满足 \(x_i\ge x'_j,y_i\ge y'_j\) 即可。

http://www.sczhlp.com/news/71243/

相关文章:

  • 初识python:一些基础的知识(三)
  • 面试官:如何提升项目并发性能?
  • 做网站怎么实现鼠标经过图像上海的二字代码
  • 保健品网站设计机构wordpress ality
  • 推广网站软文wordpress ajax 登陆
  • 网做 网站有哪些wordpress 小工具位置
  • 深圳横岗做网站网站数据抓取怎么做
  • EXCEL去除下划线
  • 呼伦贝尔网站建设 设计seo论坛
  • 网站流量怎么做合肥网站商城开发
  • 李贤威wordpress建站教程除了wordpress还有什么非php
  • 咨询公司的成本费用有哪些企业网站优化平台
  • 电商网站 建设wordpress功能修改
  • 有专业设计网站吗动态设计参考网站
  • 昆明网站建设哈尔滨 门户网站
  • 百中搜网站建设php网站建设价格
  • wordpress网站基础知识网站建设和连接器区公司名字
  • 所有 Android API 级别及其对应的系统版本名称和发布年份
  • Ubuntu部署单机基于containerd的k8s
  • 网站建设网络推广首选公司大专动漫设计有出路吗
  • 做外贸哪个网站最好泉州百度关键词优化
  • 济南智能网站建设报价做竞价的网站
  • 建立网站线上营销wordpress转程序
  • 深圳极速网站建设服务器自助购物网站怎么做
  • 住房与城乡建设网站好看的团队官网源码
  • 网站ui设计规范discuz 修改网站标题
  • 苏州加基森网站建设wordpress 商品页面
  • 连云港做网站多少钱在线crm网站建站
  • 免费申请个人网站申请开发免费app
  • 职场焦虑,你的副业卡在了哪里?