【题目链接】:http://hihocoder.com/contest/offers15/problem/1

【题意】

【题解】



把3个数组的元素全都合并在一个数组里面;

(当然你要记录每个数字原本是在哪一个数组里面的)

然后排个序;

找到原本a,b,c数组中的元素第一次出现的位置

pos[1],pos[2],pos[3];

然后按照公式直接计算

D=?

然后把,pos[1],pos[2],pos[3]中最小的那个pos[i]

令pos[i]=nex(pos[i]);

然后再重新计算D=?

重复上述步骤取最小的D就好;

贪心吧

相邻的肯定差最小;

看看是哪3个构成了最后的答案而已;



【Number Of WA】



0



【完整代码】

#include <bits/stdc++.h>
using namespace std;
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define LL long long
#define rep1(i,a,b) for (int i = a;i <= b;i++)
#define rep2(i,a,b) for (int i = a;i >= b;i--)
#define mp make_pair
#define pb push_back
#define fi first
#define se second
#define ms(x,y) memset(x,y,sizeof x) typedef pair<int,int> pii;
typedef pair<LL,LL> pll; const int dx[9] = {0,1,-1,0,0,-1,-1,1,1};
const int dy[9] = {0,0,0,-1,1,-1,1,-1,1};
const double pi = acos(-1.0);
const LL MOD = 1e9+7;
const int N = 3*(1e5+100); struct abc
{
int id,val;
}; int n,m,l,cnt,pos[4],ans;
abc a[N]; bool cmp1(abc a,abc b)
{
return a.val < b.val;
} int nex(int x)
{
int r = pos[x];
pos[x] = n+1;
rep1(i,r+1,n)
if (a[i].id==x)
{
pos[x] = i;
break;
}
return pos[x];
} int fi()
{
int ju = 1;
if (pos[2]<pos[ju]) ju = 2;
if (pos[3]<pos[ju]) ju = 3;
return ju;
} int getd()
{
return abs(a[pos[1]].val-a[pos[2]].val)+
abs(a[pos[2]].val-a[pos[3]].val)+
abs(a[pos[3]].val-a[pos[1]].val);
} int main()
{
//freopen("F:\\rush.txt","r",stdin);
cin >> n >> m >> l;
rep1(i,1,n) cin >> a[++cnt].val,a[cnt].id = 1;
rep1(i,1,m) cin >> a[++cnt].val,a[cnt].id = 2;
rep1(i,1,l) cin >> a[++cnt].val,a[cnt].id = 3;
n = cnt;
sort(a+1,a+1+n,cmp1);
rep1(i,1,3) pos[i] = nex(i);
ans = getd();
while (1)
{
int mi = fi();
pos[mi] = nex(mi);
if (pos[mi]==n+1) break;
ans = min(ans,getd());
}
cout << ans << endl;
return 0;
}

【[Offer收割]编程练习赛15 A】 偶像的条件的更多相关文章

  1. [Offer收割]编程练习赛15 A.偶像的条件[贪心]

    #1514 : 偶像的条件 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi的学校正面临着废校的大危机.面对学校的危机,小Hi同学们决定从ABC三个班中各挑出一名同 ...

  2. [Offer收割]编程练习赛15 B.分数调查[加权并查集]

    #1515 : 分数调查 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi的学校总共有N名学生,编号1-N.学校刚刚进行了一场全校的古诗文水平测验. 学校没有公布测 ...

  3. 【[Offer收割]编程练习赛15 C】过河问题

    [题目链接]:http://hihocoder.com/problemset/problem/1516 [题意] [题解] 状态压缩DP+bfs 这个过河问题能用bfs来搞.涨知识了; 首先; 16个 ...

  4. 【[Offer收割]编程练习赛15 B】分数调查

    [题目链接]:http://hihocoder.com/problemset/problem/1515 [题意] [题解] 带权并查集 relation[x]表示父亲节点比当前节点大多少; 对于输入的 ...

  5. hihocoder [Offer收割]编程练习赛4

    描述 最近天气炎热,小Ho天天宅在家里叫外卖.他常吃的一家餐馆一共有N道菜品,价格分别是A1, A2, ... AN元.并且如果消费总计满X元,还能享受优惠.小Ho是一个不薅羊毛不舒服斯基的人,他希望 ...

  6. hihocoder [Offer收割]编程练习赛61

    [Offer收割]编程练习赛61 A:最小排列 给定一个长度为m的序列b[1..m],再给定一个n,求一个字典序最小的1~n的排列A,使得b是A的子序列. 贪心即可,b是A的子序列,把不在b中的元素, ...

  7. [Offer收割]编程练习赛46

    [Offer收割]编程练习赛46赛后题解 A.AEIOU 分析

  8. [Offer收割]编程练习赛23-freeloop

    A. H国的身份证号码I dfs裸题. 时间复杂度\(O(n^k)\). #include <bits/stdc++.h> #define FOR(i,a,b) for (int i=a; ...

  9. hihoCoder[Offer收割]编程练习赛1题目解析

    题目1 : 九宫 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描写叙述 小Hi近期在教邻居家的小朋友小学奥数.而近期正好讲述到了三阶幻方这个部分,三阶幻方指的是将1~9不反 ...

随机推荐

  1. JEECMS自定义标签开发步骤

    JEECMS自带的只有[@cms_advertising]标签,并且官方没有给文档,用法: [@cms_advertising id='3']             <img src=&quo ...

  2. 关于python的元组操作

    关于元组: 元组和列表是类似的,但是元组中的数据是不可以修改的. 元组是一对 () 元组操作: 元组是不可以修改的所以对元组的操作极少 定义空元组(因为元组一旦创建,数据不可被修改,所以极少创建空元组 ...

  3. leetcode 839 Similar String Groups

    题目 Two strings X and Y are similar if we can swap two letters (in different positions) of X, so that ...

  4. PHP 学习1.0

    1.简单一个class 类: 获取表单提交的值 采用post方式 <html><head><title>PHP TEST</title></hea ...

  5. js生成二维码以及插入图片

    先根据qrcode官网demo,不同属性值的变化,二维码的变化效果:https://larsjung.de/jquery-qrcode/latest/demo/ 进入demo中,审查元素查看里面引用的 ...

  6. C 语言中 #pragma 的使用

    在所有的预处理指令中,#Pragma指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作.#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情 ...

  7. Ubuntu下安装Mongo方法

    场景:Ubuntu14下安装mongo,建议不要使用apt-get install 的命令安装,因为版本比较老 1.deb下载地址(可以自行选择OS,版本,server或tool或shell)http ...

  8. 简单介绍几个CSSReset的方法

    对于小型的网站来说,用这个并不会带来大的资源浪费,但如果是像Yahoo这种架构非常大的网站,必须要有选择地进行CSS重设,以减 少资源浪费. 正在使用CSS的你,用过CSS Reset吗?当然,或许你 ...

  9. PHP 从 MongoDb 中查询数据怎么样实现

    一.软件环境(版本非必须) php v5.6 扩展:MongoDB nginx v1.11 mongodb v3.2 note: 必须安装MongoDB扩展 二.连接 $client = new Mo ...

  10. LintCode刷题笔记-- O(1) Check Power of 2

    标签: 位运算 题目: Using O(1) time to check whether an integer n is a power of 2. 解题思路: 这道题是利用位运算判断一个数是不是2 ...