Codeforces Round#251(Div 2)D Devu and his Brother
——你以为你以为的。就是你以为的?
——有时候还真是
题目链接:http://codeforces.com/contest/439/problem/D
题意大概就是要求第一个数组的最小值要不小于第二个数组的最大值,你所能做的就是对数组中的某一个数进行+1/-1的操作。最后问操作次数最少须要多少次。
起初这题我看着例子就開始瞎YY了,YY思路如图= =|||
看似有那么一丁点道理,可是事实上是无法这么找到的,非常快就自己找到了反例。。
只是之所以说是有那么一点道理是由于例子中的边缘数正好是它的平衡点,所谓平衡点就是将第一个数组里的数提升到某一个数a之上,把第二个数组的全部数降到数a之下。这就好比将一个天平平衡了。也就是最优解了。
可随之而来的问题也就非常明了了。怎样找到哪个平衡数呢?
我们最好还是先把两个数组里的数存到同一个数组里。然后升序排序。这样我们就得到了一条线性的数列,那么既然是n+m个数里前m个要比后n个小,也就非常自然的能找到平衡点为数列其中的第m或者第m+1个数了。
#include<cstdio>
#include<algorithm>
#define MAX(a,b) ((a>b)?(a):(b))
using namespace std;
int a[1000010],b[1000010],c[2000020];
int main(){
int n,m;
long long ans= 0LL;
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++) scanf("%d",&a[i]),c[i]=a[i];
for(int i=0;i<m;i++) scanf("%d",&b[i]),c[n+i]=b[i];
sort(c,c+m+n);
int temp=c[m];
for(int i=0;i<n;i++) ans+=MAX(0,(temp-a[i]));
for(int i=0;i<m;i++) ans+=MAX(0,(b[i]-temp));
printf("%I64d\n",ans);
return 0;
}
Codeforces Round#251(Div 2)D Devu and his Brother的更多相关文章
- Codeforces Round #251 (Div. 2) C. Devu and Partitioning of the Array
注意p的边界情况,p为0,或者 p为k 奇数+偶数 = 奇数 奇数+奇数 = 偶数 #include <iostream> #include <vector> #include ...
- Codeforces Round #251 (Div. 2) B. Devu, the Dumb Guy
注意数据范围即可 #include <iostream> #include <vector> #include <algorithm> using namespac ...
- Codeforces Round #251 (Div. 2) A - Devu, the Singer and Churu, the Joker
水题 #include <iostream> #include <vector> #include <algorithm> using namespace std; ...
- Codeforces Round 251 (Div. 2)
layout: post title: Codeforces Round 251 (Div. 2) author: "luowentaoaa" catalog: true tags ...
- Codeforces Round #258 (Div. 2) E. Devu and Flowers 容斥
E. Devu and Flowers 题目连接: http://codeforces.com/contest/451/problem/E Description Devu wants to deco ...
- Codeforces Round #258 (Div. 2)E - Devu and Flowers
题意:n<20个箱子,每个里面有fi朵颜色相同的花,不同箱子里的花颜色不同,要求取出s朵花,问方案数 题解:假设不考虑箱子的数量限制,隔板法可得方案数是c(s+n-1,n-1),当某个箱子里的数 ...
- Codeforces Round #366 (Div. 2) ABC
Codeforces Round #366 (Div. 2) A I hate that I love that I hate it水题 #I hate that I love that I hate ...
- Codeforces Round #354 (Div. 2) ABCD
Codeforces Round #354 (Div. 2) Problems # Name A Nicholas and Permutation standard input/out ...
- Codeforces Round #368 (Div. 2)
直达–>Codeforces Round #368 (Div. 2) A Brain’s Photos 给你一个NxM的矩阵,一个字母代表一种颜色,如果有”C”,”M”,”Y”三种中任意一种就输 ...
随机推荐
- java全局变量使用
1.在多线程的作用下,全局变量可能被多个程序使用,如果有人修改,全局变量就被修改了,导致别人使用的时候,出现问题 2.解决方法: 全局变量改为私有变量. 或者把全局变量改为final类型,只能读取,不 ...
- Jquery学习笔记(9)--注册验证复习(未用到ajax)
纯复习,在$(this).val()这里浪费了时间,val()只适合input里面的value值,如果是span等标签里包裹的文本要用text()!! <!DOCTYPE html> &l ...
- Unix系统编程(四)creat系统调用
我好疑惑啊,creat系统调用为啥没有以e结尾呢?搞得我每次都怀疑我敲错了. 在早期的UNIX实现中,open只有两个参数,无法创建新文件,而是使用creat系统调用创建并打开一个新文件. int c ...
- Hive学习笔记——Hive中的分桶
对于每一个表(table)或者分区, Hive可以进一步组织成桶,也就是说桶是更为细粒度的数据范围划分.Hive也是针对某一列进行桶的组织.Hive采用对列值哈希,然后除以桶的个数求余的方式决定该条记 ...
- 再来一个expect脚本
[root@jenkins scripts]# cat expect_test1205.sh #!/usr/bin/expect ################################### ...
- CRF++使用说明
摘选自 :CRF++: Yet Another CRF toolkit Usage: 1.输入输出文件 He PRP B-NP reckons VBZ B-VP the DT B-NP current ...
- js定时器(执行一次、重复执行)
代码如下: <script> //定时器 异步运行 function hello(){ alert("hello"); } //使用方法名字执行方法 var t1 = ...
- redis php 实例二
前面一篇博客主要是string类型,list类型和set类型,下面hash类型和zset类型 1,hset 描述:将哈希表key中的域field的值设为value.如果key不存在,一个新的哈希表被创 ...
- Ubuntu14.4下安装FTP
今天学习了Ubuntu上安装ftp的实例. 1.window上已经安装wamp(windows + apache + mysql + php) 2.window上已安装VMware Workstati ...
- wpf ComboBox设置默认值
最新的wpf的ComboBox设置默认值得方法是,给VM中的数据集合第一个元素插入一个提示项目,比如:请选择一项,然后通过数据绑定可以实现默认选中第一项,下面我就贴一下示例代码: xaml页面: &l ...