Codeforces Round #635 (Div. 2) D. Xenia and Colorful Gems 暴力 + 二分

传送门

文章目录

  • 题意:
  • 思路:

题意:

给你三个数组a,b,ca,b,ca,b,c,让你从每个数组中选择一个数x,y,zx,y,zx,y,z,使得(x−y)2+(x−z)2+(y−z)2(x-y)^2+(x-z)^2+(y-z)^2(xy)2+(xz)2+(yz)2最小,求这个最小值。

思路:

由于答案一定是x≤y≤zx\le y\le zxyz的形式(当然这里的x,y,zx,y,zx,y,z与题意的x,y,zx,y,zx,y,z不同),所以我们就可以跑一个3!3!3!排列,让他们分别为x,y,zx,y,zx,y,z,让后枚举其中一个二分另外俩就行了。
具体实现可以写个函数就比较方便了。
我这里写的是枚举xxx,让后分两种即找yyy和找zzz,如果找yyy的话,假设现在已经有x≤yx\le yxy了,那么找的zzz根据平方的性质,最好是x+(y−x)/2x+(y-x)/2x+(yx)/2附近的位置,二分找即可,对于zzz同理。
总结:这个题瞎搞都能过。

// Problem: D. Xenia and Colorful Gems
// Contest: Codeforces - Codeforces Round #635 (Div. 2)
// URL: https://codeforces.com/contest/1337/problem/D
// Memory Limit: 256 MB
// Time Limit: 3000 ms
// 
// Powered by CP Editor (https://cpeditor.org)//#pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math")
//#pragma GCC target("sse,sse2,sse3,ssse3,sse4.1,sse4.2,avx,avx2,popcnt,tune=native")
//#pragma GCC optimize(2)
#include<cstdio>
#include<iostream>
#include<string>
#include<cstring>
#include<map>
#include<cmath>
#include<cctype>
#include<vector>
#include<set>
#include<queue>
#include<algorithm>
#include<sstream>
#include<ctime>
#include<cstdlib>
#define X first
#define Y second
#define L (u<<1)
#define R (u<<1|1)
#define pb push_back
#define mk make_pair
#define Mid (tr[u].l+tr[u].r>>1)
#define Len(u) (tr[u].r-tr[u].l+1)
#define random(a,b) ((a)+rand()%((b)-(a)+1))
#define db puts("---")
using namespace std;//void rd_cre() { freopen("d://dp//data.txt","w",stdout); srand(time(NULL)); }
//void rd_ac() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//AC.txt","w",stdout); }
//void rd_wa() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//WA.txt","w",stdout); }typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int,int> PII;const int N=1000010,mod=1e9+7,INF=0x3f3f3f3f;
const LL inf=0x3f3f3f3f3f3f3f3f;
const double eps=1e-6;int n1,n2,n3;
LL a[N],b[N],c[N];LL get(int i,int j,int k) {//cout<<i<<' '<<j<<' '<<k<<endl;return (a[i]-b[j])*(a[i]-b[j])+(a[i]-c[k])*(a[i]-c[k])+(b[j]-c[k])*(b[j]-c[k]);
}LL solve() {LL ans=inf;for(int i=1;i<=n1;i++) {int val1=a[i];int pos1=lower_bound(b+1,b+1+n2,val1)-b;if(pos1<=n2) {int pos2=lower_bound(c+1,c+1+n3,a[i]+(b[pos1]-a[i])/2)-c;if(pos2<=n3) ans=min(ans,get(i,pos1,pos2));			pos2--;if(pos2>=1) ans=min(ans,get(i,pos1,pos2));}pos1++;if(pos1<=n2) {int pos2=lower_bound(c+1,c+1+n3,a[i]+(b[pos1]-a[i])/2)-c;if(pos2<=n3) ans=min(ans,get(i,pos1,pos2));			pos2--;if(pos2>=1) ans=min(ans,get(i,pos1,pos2));}pos1-=2;if(pos1>=1) {int pos2=lower_bound(c+1,c+1+n3,b[pos1]+(a[i]-b[pos1])/2)-c;if(pos2<=n3) ans=min(ans,get(i,pos1,pos2));			pos2--;if(pos2>=1) ans=min(ans,get(i,pos1,pos2));}pos1=lower_bound(c+1,c+1+n3,val1)-c;if(pos1<=n3) {int pos2=lower_bound(b+1,b+1+n2,a[i]+(c[pos1]-a[i])/2)-b;if(pos2<=n2) ans=min(ans,get(i,pos2,pos1));			pos2--;if(pos2>=1) ans=min(ans,get(i,pos2,pos1));}pos1++;if(pos1<=n3) {int pos2=lower_bound(b+1,b+1+n2,a[i]+(c[pos1]-a[i])/2)-b;if(pos2<=n2) ans=min(ans,get(i,pos2,pos1));			pos2--;if(pos2>=1) ans=min(ans,get(i,pos2,pos1));}pos1-=2;//cout<<pos1<<' '<<c[pos1]<<' '<<a[i]<<endl;if(pos1>=1) {int pos2=lower_bound(b+1,b+1+n2,c[pos1]+(a[i]-c[pos1])/2)-b;if(pos2<=n2) ans=min(ans,get(i,pos2,pos1));			pos2--;if(pos2>=1) ans=min(ans,get(i,pos2,pos1));}}return ans;
}int main()
{
//	ios::sync_with_stdio(false);
//	cin.tie(0);int _; scanf("%d",&_);while(_--) {scanf("%d%d%d",&n1,&n2,&n3);for(int i=1;i<=n1;i++) scanf("%lld",&a[i]);for(int i=1;i<=n2;i++) scanf("%lld",&b[i]);for(int i=1;i<=n3;i++) scanf("%lld",&c[i]);sort(a+1,a+1+n1); sort(b+1,b+1+n2); sort(c+1,c+1+n3);n1=unique(a+1,a+1+n1)-a-1;n2=unique(b+1,b+1+n2)-b-1;n3=unique(c+1,c+1+n3)-c-1;printf("%lld\n",solve());}return 0;
}
/**/

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

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

相关文章

用.NET Core实现一个类似于饿了吗的简易拆红包功能

需求说明以前很讨厌点外卖的我&#xff0c;最近中午经常点外卖&#xff0c;因为确实很方便&#xff0c;提前点好餐&#xff0c;算准时间&#xff0c;就可以在下班的时候吃上饭&#xff0c;然后省下的那些时间就可以在中午的时候多休息一下了。点餐结束后&#xff0c;会有一个好…

【POI2011】LIZ-Lollipop 【构造】

传送门 题意&#xff1a;给一个长度为nnn的只有111和222的序列&#xff0c;多次询问给定xxx构造或判断无法构造一个区间和为xxx 注意到111和222实质上是改不改变奇偶性&#xff0c;所以往这上面考虑 我们发现如果一个区间[L,R][L,R][L,R]和为x(x>2)x(x>2)x(x>2),我…

kubernetes实战篇之helm示例yaml文件文件详细介绍

前面完整示例里,我们主要讲解helm打包,部署,升级,回退等功能,关于这里面的文件只是简单介绍,这一节我们详细介绍一下这里面的文件,以方便我们参照创建自己的helm chart.Helm Chart 结构Chart 目录结构mychart/ Chart.yaml LICENSE README.md values.yaml requirements.yam…

P4309 [TJOI2013]最长上升子序列 平衡树 + dp

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 思路&#xff1a; 注意到一个很关键的条件&#xff0c;每次插入iii&#xff0c;而iii是递增的&#xff0c;也就是说插入iii之后只会从前面的最大值转移过来&#xff0c;所以我们现在只需要维护插入操作即可&…

【AGC035C】Skolem XOR Tree【异或】【构造】

传送门 题意&#xff1a;给定nnn&#xff0c;构造或判断无法构造一个2n2n2n个结点的树&#xff0c;其中结点iii和ininin的权值为iii,且所有iii和ininin路径权值异或和等于iii。 注意到 2i⊕2i112i\oplus2i112i⊕2i11&#xff0c;然后可以脑补出 然而111没处理 发现1⊕2⊕301\…

ASP.NET Core 管道再探

几乎任何服务器端处理环境都有自己的直通组件管道&#xff0c;用于检查、重路由或修改传入请求和传出响应。经典 ASP.NET 围绕 HTTP 模块理念进行排列&#xff0c;而 ASP.NET Core 采用基于中间件组件的更现代的体系结构。最终目的是相同的 - 允许可配置的外部模块以请求&#…

GRPC与.net core

QQ讨论群&#xff1a;953553560正文系列章节GRPC与.net coreGRPC截止时间与元数据GRPC与netcore IdentityGRPC与netcore IdentityServer4概述GRPC的数据交互模式有&#xff1a;1.单项RPC&#xff0c;最简单的数据交换方式&#xff0c;客户端发出单个请求&#xff0c;收到单个响…

【Hitachi2020C】ThREE【构造】【二分图染色】

传送门 题意&#xff1a;给一棵nnn个结点的树&#xff0c;构造一个nnn阶排列ppp&#xff0c;使得所有距离为333的点对(i,j)(i,j)(i,j)满足pipjp_ip_jpi​pj​和pipjp_ip_jpi​pj​至少一个为333的倍数。 分析一下&#xff0c;这个条件等价于所有距离333的点对点权对三取模后不…

【HNOI2015】接水果【整体二分】【DFS序】【双区间转矩形】【扫描线】【树状数组】

传送门 题意&#xff1a;给定一个nnn个点的树&#xff0c;定义一个“盘子”为一个给定权值的路径&#xff0c;一个“水果”为一条路径&#xff0c;一个盘子可以接到水果当且仅当盘子的路径是水果的子路径。给出所有盘子和水果&#xff0c;对于每个水果求可以接它的盘子中第kik…

程序员修神之路--做好分库分表其实很难之一

点击上方“蓝字”带你去看小星星菜哥&#xff0c;领导让我开发新系统了这么说领导对你还是挺信任的呀~必须的&#xff0c;为了设计好这个新系统&#xff0c;数据库设计我花了好多心思呢做一个系统我觉得不应该从数据库入手&#xff0c;应该从设计业务模型开始&#xff0c;先不说…

【CF1311E】Construct the Binary Tree【增量构造】【复杂度证明】

题意&#xff1a;给定nnn和ddd&#xff0c;构造或判断无法构造一棵二叉树使得所有点的深度&#xff08;定义为到根距离&#xff09;之和为ddd。 n,d≤5000n,d\leq 5000n,d≤5000 显然可以算出有解的ddd的下界和上界&#xff0c;分别是完全二叉树和链的情况。下面会证明在这个范…

Office 365开发者的前端必备课程

这篇文章其实不仅仅是写给Office 365开发者的&#xff0c;但对于广大的Office 365开发者来说确实相当重要的。这里提到的Office 365开发者&#xff0c;包括了Office Add-ins&#xff0c;SharePoint Add-ins&#xff0c;Microsoft Graph&#xff0c;Microsoft Teams的开发者。我…

【CF1338C】Perfect Triples【位运算】【构造】

传送门 题意&#xff1a;有一序列SSS由下列方式生成&#xff1a; 找到字典序最小的正整数(a,b,c)(a,b,c)(a,b,c)&#xff0c;满足a,b,ca,b,ca,b,c不在SSS中且a⊕b⊕c0a\oplus b\oplus c0a⊕b⊕c0,其中⊕\oplus⊕为异或将a,b,ca,b,ca,b,c加入SSS重复第一步 TTT组数据&#xff…

.NET开发框架(五)-IIS上部署ASP.NET Core项目教程

在之前教程中&#xff0c;我们分享了框架的功能与视频演示介绍(文尾底部提供往期教程快捷链接)系列教程&#xff1a;从初学者到架构师的一步步蜕变本篇经验将和大家介绍如何在IIS上部署ASP.NET Core项目&#xff0c;希望对初学.NET CORE的童靴入门有所帮助&#xff01;1、打开V…

P4146 序列终结者 平衡树 + lazy维护

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 思路&#xff1a; 平衡树裸题&#xff0c;直接维护俩lazylazylazy就行了。 需要注意的是&#xff0c;只有儿子节点存在的时候才能更新&#xff0c;不然更新到000号节点之后&#xff0c;给000号点加上了奇怪的…

.NET开发框架(四)-服务器IIS实践教程

前三篇教程中&#xff0c;我们分享了框架的功能与视频演示介绍(文尾底部提供往期教程快捷链接)&#xff0c;今天开始我们进入实践教程&#xff0c;从0开始教学&#xff0c;让你从新手到架构师之兑变&#xff0c;目前已经重置了一台服务器&#xff0c;从安装与配置各组件开始学习…

【十二省联考2019】异或粽子【01Trie】【堆】【前k大套路】

题意&#xff1a;给定长度为nnn的序列aaa&#xff0c;求前kkk大的区间异或和之和。 n≤5105,k≤min⁡(n(n−1)2,2105),ai<232n\leq 5\times 10^5,k\leq \min(\frac{n(n-1)}2,2\times10^5),a_i<2^{32}n≤5105,k≤min(2n(n−1)​,2105),ai​<232 原来省选题这么裸&…

.NET Core IdentityServer4实战 第六章-Consent授权页

在identityServer4中登陆页面只要是成功了&#xff0c;就会注册一个Cookie在服务器资源上&#xff0c;像现在大部分的网站第三方授权&#xff0c;都是经过一个页面&#xff0c;然后选需要的功能&#xff0c;IdentityServer4也给我们提供了&#xff0c;只要你登陆成功,就会跳转到…

Codeforces Round #674 (Div. 3) F. Number of Subsequences 简单计数dp

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 给你一个长度为nnn的串&#xff0c;包含a,b,c,?a,b,c,?a,b,c,?四种字符&#xff0c;其中???可以变成为a,b,ca,b,ca,b,c的任意一种&#xff0c;让你求abcabcabc子序列出现的次数。 思路&#xff1a; …

【十二省联考】春节十二响【贪心】【堆】【启发式合并】

传送门 题意&#xff1a;给一棵nnn个点带点权的树&#xff0c;要求把点分成若干部分&#xff0c;有祖孙关系的点不能在同一部分。求每个部分最大值 的和 的最小值。 n≤2105n \leq 2\times 10^5n≤2105 由链的部分得到启发&#xff0c;每个点用一个堆来维护&#xff0c;合并两…