CF R 635 div2 1337D Xenia and Colorful Gems 贪心 二分 双指针
考试的时候没想到一个很好的做法。
赛后也有一个想法。
可以考虑答案的样子 x,y,z 可以发现 一共有 x<=y<=z,z<=y<=z,y<=x<=z...
6种情况 考虑 y<=x<=z 观察这个形式 枚举x 发现y在<=x中显然取较大的那个更优 证明的话 x不变 在z不变的情况 y在符合条件的情况下自然 越小越不优 再讨论z越大的问题 再讨论y z一个变小一个变大的情况 综上可以发现 y z都是要满足条件的第一个数时最优。
考虑暴力枚举6种情况然后计算。
但是 对于x<=y<=z的情况 可以发现枚举x 此时上述条件不成立了 对于找到的z来说 y在x和z中间 这样y就可以不满足我们上面说的条件了 可以夹在x和z中间。
怎么解决?非常巧妙的一点是 对于这种情况 我们枚举y 然后就重新满足上述条件了。
我这破脑子 就是想不到啊.值得注意的是找前驱和后继 可以指针直接扫 觉得麻烦可以直接lower bound和upper bound.
const ll MAXN=100010;
ll T;
ll na,nb,nc,ans;
vector<int>g[3];
inline ll js(ll a,ll b,ll c){return pf(a-b)+pf(a-c)+pf(b-c);}
inline void solve(int a,int b,int c)//a<=b<=c;
{
for(ui i=0;i<g[b].size();++i)
{
ll y,z;y=upper_bound(g[a].begin(),g[a].end(),g[b][i])-g[a].begin()-1;
if(y!=-1)
{
z=lower_bound(g[c].begin(),g[c].end(),g[b][i])-g[c].begin();
if(z!=g[c].size())ans=min(ans,js(g[b][i],g[c][z],g[a][y]));
}
}
}
signed main()
{
freopen("1.in","r",stdin);
get(T);
while(T--)
{
g[0].clear();g[1].clear();
g[2].clear();
get(na);get(nb);get(nc);
rep(1,na,i)g[0].pb(read());
rep(1,nb,i)g[1].pb(read());
rep(1,nc,i)g[2].pb(read());
sort(g[0].begin(),g[0].end());
sort(g[1].begin(),g[1].end());
sort(g[2].begin(),g[2].end());
ans=INF;
//cout<<lower_bound(g[0].begin(),g[0].end(),10)-g[0].begin();
solve(1,0,2);solve(2,0,1);
solve(0,1,2);solve(2,1,0);
solve(0,2,1);solve(1,2,0);
putl(ans);
}
return 0;
}
CF R 635 div2 1337D Xenia and Colorful Gems 贪心 二分 双指针的更多相关文章
- CF #635D Xenia and Colorful Gems 枚举+二分
Xenia and Colorful Gems 题意 给出三个数组,在每个数组中选择一个数字x,y,z,,使得\((x-y)^2+(y-z)^2+(x-z)^2\)最小. 思路 我们假设x<=y ...
- Codeforces 1337D Xenia and Colorful Gems
题意 给你3个数组\(a, b\)和\(c\),最小化\((x-y)^2+(y-z)^2+(z-x)^2\),其中\(x \in a, y \in b, z \in c\). 解题思路 这题其实第一眼 ...
- CF R 635 div1 C Kaavi and Magic Spell 区间dp
LINK:Kaavi and Magic Spell 一打CF才知道自己原来这么菜 这题完全没想到. 可以发现 如果dp f[i][j]表示前i个字符匹配T的前j个字符的方案数 此时转移变得异常麻烦 ...
- CF R 639 div2 F Review 贪心 二分
LINK:Résumé Review 这道题让我眼前一亮没想到二分这么绝. 由于每个\(b_i\)都是局部的 全局只有一个限制\(\sum_{i=1}^nb_i=k\) 所以dp没有什么用 我们只需要 ...
- E CF R 85 div2 1334E. Divisor Paths
LINK:Divisor Paths 考试的时候已经想到结论了 可是质因数分解想法错了 导致自闭. 一张图 一共有D个节点 每个节点x会向y连边 当且仅当y|x,x/y是一个质数. 设f(d)表示d的 ...
- CF R 632 div2 1333F Kate and imperfection
赛后看了半天题 才把题目看懂 英语水平极差. 意思:定义一个集合S的权值为max{gcd(a,b)};且\(a\neq b\) 这个集合可以从1~n中选出一些数字 求出当集合大小为k时的最小价值. 无 ...
- CF R 632 div2 1333D Challenges in school №41
LINK:Challenges in school №41 考试的时候读错题了+代码UB了 所以wa到自闭 然后放弃治疗. 赛后发现UB的原因是 scanf读int类型的时候 宏定义里面是lld的类型 ...
- CF R 630 div2 1332 F Independent Set
LINK:Independent Set 题目定义了 独立集和边诱导子图.然而和题目没有多少关系. 给出一棵树 求\(\sum_{E'\neq \varnothing,E'\subset E}w(G( ...
- Xenia and Colorful Gems(二分--思维)
给定三个数组a,b,c. 要求从每个数字取一个数,使得两两之差和最小. 求出这个数. \(我又懵逼了.我是会O(n^3)的暴力啊,怎么办.\) \(\color{Red}{从结果看,选出来的三个数必定 ...
随机推荐
- mongodb安装与mongo vue的使用
首先,下载mongodb,然后安装 http://downloads.mongodb.com/win32/mongodb-win32-x86_64-enterprise-windows-64-2.6. ...
- day10 字符编码
字符编码 在python中出现乱码就是字符编码没有匹配的问题 python3中执行python3编辑的代码只要没有修改过编码,都是用utf-8,如果出现乱码就修改头文件,改成和原来编码相同的字符编码 ...
- 武汉百得思维Java面试总结
武汉百得思维Java面试总结 在一个愉快的下午,我们并不十分愉快地参加了宣讲会.那是国庆的前两天,大家正在为放假的愉悦所兴奋也在为找工作而紧张. 在听过一阵胡吹乱侃之后,大家都昏昏欲睡,于是终于迎来了 ...
- Flask 基础组件(八):message
message是一个基于Session实现的用于保存数据的集合,其特点是:使用一次就删除. from flask import Flask, flash, redirect, render_templ ...
- conda install 失败 http404
最近conda install keras出现各种问题,显示配置问你,配置了清华中科大的源,都不行 估计原因是:配置各种源太多,最后全部删除只留一个清华源,成功 暴力方法直接删除C:\Users\Ad ...
- Cordova总是弹出Connection to server was Unsuccessful
开发环境:Cordova版本:6.x 安卓版本:6.0 解决方案一: 在config.xml中添加以下内容: <preference name="LoadUrlTimeoutValue ...
- PHP基础:(常量变量,数据类型,类型转换)
预定义变量(系统变量) $_GET:get方式提交的数据 $_POST:post方式提交的数据 $_REQUEST:$_GET,$_POST数据综合 $GLOBALS:PHP中所有的全局变量 $_SE ...
- 2020软件测试自学全套教程-基于python自动化软件测试-2020新版软件测试中级程序员学习路线
不知不觉间,在软件测试行业野蛮的折腾了七年之久.七年之痒也即将过去,但我还是热爱着软件测试这一份工作,一路坚持,走到现在.经历过各种难题,有过迷茫,有过焦虑失眠.也踩过无数的坑,深知行业的不易.自从9 ...
- react实战 : 用矩阵思想做一个自适应布局容器组件
需求是这样的. 有一个需要显示若干方块型元素的小区域 数量比较少的时候显示一排 数量比较多的时候显示两排 用 grid 不好,因为当数量为奇数的时候需要两排里面的元素都乖乖的居中显示. 用 flex ...
- PHP中使用 TUS 协议来实现可恢复文件上传
曾经尝试过用PHP上传大文件吗?想知道您是否可以从上次中断的地方继续上传,而不会在遇到任何中断的情况下再次重新上传整个数据?如果您觉得这个场景很熟悉,请接着往下阅读. 文件上传是我们几乎所有现代Web ...