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 ...
随机推荐
- [转]SQL Server 和Oracle 数据类型对应
本文转自:http://blog.sina.com.cn/s/blog_681cd80d0100q84t.html SqlServer 2k转换为Oracle 10g 列名 SqlServer数据类型 ...
- css扁平化博客学习总结(三)header代码实现
页头.banner.正文.页脚的宏观布局 1.布局顺序的重要性: 由大到小,着眼最大的部分,慢慢细分. <body> <header><!-- 页头开始 --> & ...
- for循环里面的判断条件
先看下面这段代码,你很容易猜到结果 for(i=0;i<10;i++){ console.log(i); // 结果是打印出 1,2,3,4,5,6,7,8,9 } 再看一下这款代码,也许很容易 ...
- Android 调用webService(.net平台)
什么是webservice? Web service是一个平台独立的,低耦合的,自包含的.基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述.发布.发现.协调和 ...
- ios推送基于YII第三方组件的类库
<?php namespace common\extensions\push; use \CComponent; /** * @desc iphone推送的接口程序 */ class ApnsP ...
- 【MySQL】MySQL中针对大数据量常用技术_创建索引+缓存配置+分库分表+子查询优化(转载)
原文地址:http://blog.csdn.net/zwan0518/article/details/11972853 目录(?)[-] 一查询优化 1创建索引 2缓存的配置 3slow_query_ ...
- FusionChart 导出图片 功能实现(转载)
FusionChart 导出图片 功能实现(转载) http://www.cnblogs.com/jiagoushi/archive/2013/02/05/2893468.html 题目:精美Fusi ...
- java取随机数
一, 指定的特定几个数据集合里按“随机顺序”全部取出 一碰到随机, 可能第一个想到的是用Math.Random() 来处理, 其实java本身提供了现成的类 通过 “打乱顺序”来处理“随机”问题 方法 ...
- Javascript版选择下拉菜单互移且排序
效果图如下: 代码如下: <html> <head> <title>Javascript版选择下拉菜单互移且排序</title> <meta ht ...
- 2016.7.2this的应用
this有三个应用: 1.就是在类的方法中参数与成员参数重名了,那么用this.参数名=参数名来区分它们: 2.当一个引用对象要调用另一个已经有具体实例的引用对象,那么通过在类的定义中后面加publi ...