sjtu1333 函数时代
Description
Taring说:生活的过程就是执行函数的过程。需要命令,也需要回报。更重要的,是得到回报的过程。
好吧。。。这道题其实和上面的也没啥关系TAT,我们要求的是下面的问题:
给定\(n\)个数,第\(i\)个数为\(a[i]\)。再给定一个常数h。现在,你要把这\(n\)个数,分成两个集合,且这两个集合的并集为这\(n\)个数的全集;这两个集合的交集为空集。然后我们对于任意的两个数\(a[i],a[j]\),做一个函数\(f(a[i], a[j])\) ,此函数满足:
若\(a[i]\)和\(a[j]\)在同一个集合,那么\(f(a[i], a[j]) = a[i] + a[j]\);
若a[i]和\(a[j]\)在不同集合,那么\(f(a[i], a[j]) = a[i] + a[j] + h\)
现在Taring要使得所有这些函数的最大值和最小值的差最小,请求出这个最小差。
Input Format
第一行有两个数字,\(n\)和\(h\)。
第二行有n个数字,第i个数据为a[i]。
Output Format
有且只有一个整数,为题目要求所求的最小差。
Sample Input
3 2
1 2 3
Sample Output
1
Constraints
对于30%的数据,\(n \le 1000\)。
对于100%的数据,\(n<=100000,h,a[i]<=10^8\)
这题写了个奇怪的算法。我想肯定有某种分法使得最优解涵盖在里面。
我是这样做的。将\(a\)排序。开始时把所有元素都放入一个集合中,然后把依次\(a[i]\)放入另一个集合中,边放边维护答案就可以了。
如何证明脑补一下就行了吧(大概是让最小值变大)。
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstdlib>
using namespace std;
#define maxn (100010)
int N,H,A[maxn],ans;
int main()
{
freopen("1333.in","r",stdin);
freopen("1333.out","w",stdout);
scanf("%d%d",&N,&H);
for (int i = 1;i <= N;++i) scanf("%d",A+i);
sort(A+1,A+N+1);
ans = A[N]+A[N-1]-A[1]-A[2];
for (int i = 1;i <= N-2;i += 2)
{
int mi = min(A[1]+A[2]+H,A[i+1]+A[i+2]),ma = max(A[N]+A[N-1],A[N]+A[1]+H);
if (i > 1) ma = max(ma,A[i]+A[i-1]+H),mi = min(mi,A[1]+A[3]);
ans = min(ans,ma-mi);
}
printf("%d",ans);
fclose(stdin); fclose(stdout);
return 0;
}
sjtu1333 函数时代的更多相关文章
- requireJS 从概念到实战
requireJS 可以很轻易的将一个项目中的JavaScript代码分割成若干个模块(module).并且requireJS推荐一个模块就是一个文件,所以,你将获得一些零碎的具有互相依赖关系的JS文 ...
- 浏览器事件循环 & nodejs事件循环
第1篇:如何理解EventLoop——宏任务和微任务篇 宏任务(MacroTask)引入 在 JS 中,大部分的任务都是在主线程上执行,常见的任务有: 渲染事件 用户交互事件 js脚本执行 网络请求. ...
- 对javascript EventLoop事件循环机制不一样的理解
前置知识点: 浏览器原理,浏览器内核5种线程及协作,JS引擎单线程设计推荐阅读: 从浏览器多进程到JS单线程,JS运行机制最全面的一次梳理 [FE]浏览器渲染引擎「内核」 js异步编程,Promise ...
- HTML5时代的纯前端上传图片预览及严格图片格式验证函数(转载)
原文地址:http://www.2cto.com/kf/201401/274752.html 一.要解决什么样的问题? 在写这个函数之前,有们童鞋在群里问如何纯前端严格验证图片格式.这在html5时代 ...
- 函数计算: 让小程序开发进入 Serverless 时代
点击下载<不一样的 双11 技术:阿里巴巴经济体云原生实践> 本文节选自<不一样的 双11 技术:阿里巴巴经济体云原生实践>一书,点击上方图片即可下载! 作者 | 吴天龙(木吴 ...
- 判断系统64位(使用GetNativeSystemInfo函数,XP时代就有这个函数了)
判断系统64位 static bool IsWin64 (void) { SYSTEM_INFO si = {0}; typedef void (WINAPI *LPFN_PGNSI)(LPSYSTE ...
- 07. Web大前端时代之:HTML5+CSS3入门系列~H5 地理位置
Web大前端时代之:HTML5+CSS3入门系列:http://www.cnblogs.com/dunitian/p/5121725.html 源码:https://github.com/duniti ...
- ZeroMQ:云时代极速消息通信库
ZeroMQ:云时代极速消息通信库(大规模|可扩展|低成本|高效率解决之道,大规模分布式|多线程应用程序|消息传递架构构建利器) [美]Pieter Hintjens(皮特.亨特金斯)著 卢涛 李 ...
- 03.Web大前端时代之:HTML5+CSS3入门系列~H5功能元素
Web大前端时代之:HTML5+CSS3入门系列:http://www.cnblogs.com/dunitian/p/5121725.html 2.功能元素 1.hgroup 对网页或区段(secti ...
随机推荐
- uva - 133 The Dole Queue(成环状态下的循环走步方法)
类型:循环走步 #include <iostream> #include <sstream> #include <cstdio> #include <cstr ...
- javascript for in 循环时,会取到Array.prototype
/** *删除数组指定下标或指定对象 */ if(!Array.prototype.remove){ Array.prototype.remove = function(obj){ for(var i ...
- oracle交集,并集,差集
引自:http://www.2cto.com/database/201308/238777.html [sql] create table test1 ( name ), NN ) ); insert ...
- PHP基础2
一.函数赋值问题 function add($num1,$num2=5){ echo $num1+$num2; } add(5,19); 二.global 全局变量 把变量加入到全局变量数组中 ...
- jquery自动生成二维码
把下面的jquery代码放到想要在当前页面上面生成二维码: 代码如下: <script type="text/javascript">var _qrContent='' ...
- 移动端web学习总结
前言: 一直想做一个移动端的阶段性学习总结,但是工作太忙总是加班.现在总算可以抽出一点时间来写一写,把知道的都写下来,这样就算忘掉了,也能很快想起来,不要太机智啊,哈哈哈! 一.移动端页面常识 1.常 ...
- RabbitMQ 原文译04--路由
在前一篇文章中我们构建了一个简单的日志系统,我们可以向多个接受者广播消息. 在这篇文章我,我们将要添加一些功能使得针对部分消息的接受成为可能,例如我们只对错误的消息进行磁盘记录,同时又可以把所有的消息 ...
- ajax调用服务的基本格式
<个人积累,转载请注明出处> 格式如下: $.ajax({ type: "post", //访问WebService使用Post方式请求 url: "http ...
- [译]CSS content
原文地址:http://css-tricks.com/css-content/ CSS中有一个属性content,只能和伪元素:before和:after一起使用,他们的写法像伪类选择器(前面有冒号) ...
- 在Windows下用Mingw 4.5.2编译X264
1.下载mingw-get-inst-20110530.rar(http://www.baidu.com/link?url=-ixXW6QiuEl8CA1dKudoWCxzcTvxrpQ0nXRBHU ...