【解题报告】Math
= =本来昨天就该发的,只是断网……。
MATH
【题目描述】
小 x正在做他的数学作业,可是作业实在太难了。题目是这样的:
1.给定一个含有N个数的数列 V。
2.你可以从数列中恰好移除 K个数,定义移除后的数列为 V’。
3.定义M为V’中任意两个数的差的最大值,m为 V’中任意两个数的差的最小值。
4.请你选择删去的K 个数,使得M+m最小。
小 x的数学十分之差,于是他只能向你求助了。
【输入】
第一行两个整数 N和K。
第二行N个整数Vi。
【输出】
一行一个整数,为最小的M+m的和。
【样例输入】
5 2
-3 -2 3 8 6
【样例输出】
7
【样例解释】
删去-3 和-2,得到 V’={3,6,8},M=5,m=2,M+m=7。
【数据范围】
对于60%的数据:3 ≤ N ≤ 2 000
对于100%的数据:
3 ≤ N ≤ 200 000
1 ≤ K ≤ N - 2
-5 000 000 ≤Vi ≤ 5 000 000
对于这道题,乍一看很绕……实际也很绕,但是做法很简单。
首先,我们对原序列排序,排了序之后,枚举长度为(n-k)的区间求最大差和最小差的差(= =),然后打擂求出最小即可。
因为我们可以证明,删去元素后得到的最优序列排了序之后一定是连续的,所以只需要枚举就可以了。(证明略)
但是最后求区间最小差的时候要用倍增ST算法,不然会超时……
代码如下(风格丑别在意)
#include <algorithm>
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <cstring>
#include <string>
#include <cmath>
using namespace std;
ifstream fin("math.in");
ofstream fout("math.out");
long long int Beiz[][][]={};//アカヤ・
long long int xl[]={};//ミミ
long long int ca[]={};//iコヘi+1オトイ・
int C2[]={,,,,,,,,,,,,,,,,,,,};
long long int num=,cut=;
bool px(long long int a,long long int b);
void beiz(int cs);
long long int findi(long long int begin,long long int end);
int main(void)
{
fin>>num>>cut;
for(int i=;i<=num;i++)fin>>xl[i];
sort(xl+,xl+num+,px);
for(int i=;i<=num;i++)
{
ca[i]=abs(xl[i+]-xl[i]);
Beiz[i][][]=ca[i];
Beiz[i][][]=i+;
}
beiz();
long long int rest=num-cut-;
long long int ans=0x7fffffffffffffffll,tot=;
for(int i=;i<=cut+;i++)
{
if(i+rest>num)break;
tot=abs(xl[i+rest]-xl[i])+findi(i,i+rest-);
ans=min(tot,ans);
}
fout<<ans;
return ;
} bool px(long long int a,long long int b)
{
if(a<b)return ;
return ;
} void beiz(int cs)
{
if(cs==)return;
for(int i=;i<=num;i++)
{
Beiz[i][cs][]=Beiz[Beiz[i][cs-][]][cs-][];
Beiz[i][cs][]=min(Beiz[Beiz[i][cs-][]][cs-][],Beiz[i][cs-][]);
}
beiz(cs+);
} long long int findi(long long int begin,long long int end)
{
long long int L1=,L2=,Mid=;
double K=log((double)(end-begin))/log((double));
Mid=(int)K;
L1=Beiz[begin][Mid][];
L2=Beiz[end-C2[Mid]+][Mid][];
return min(L1,L2);
}
【解题报告】Math的更多相关文章
- Codeforces Round #382 (Div. 2) 解题报告
CF一如既往在深夜举行,我也一如既往在周三上午的C++课上进行了virtual participation.这次div2的题目除了E题都水的一塌糊涂,参赛时的E题最后也没有几个参赛者AC,排名又成为了 ...
- LeetCode 1 Two Sum 解题报告
LeetCode 1 Two Sum 解题报告 偶然间听见leetcode这个平台,这里面题量也不是很多200多题,打算平时有空在研究生期间就刷完,跟跟多的练习算法的人进行交流思想,一定的ACM算法积 ...
- 北邮新生排位赛1解题报告d-e
话说cdsn要是前面插入源代码又什么都不放就会出现奇怪的源代码?不知道是哪个网页的 407. BLOCKS 时间限制 1000 ms 内存限制 65536 KB 题目描述 给定一个N∗M的矩阵,求问里 ...
- 2014 ACM/ICPC 鞍山赛区现场赛 D&I 解题报告
鞍山现场赛结束了呢-- 我们出的是D+E+I三道题-- 吾辈AC掉的是D和I两道,趁着还记得.先在这里写一写我写的两道水题D&I的解题报告吧^_^. D题的意思呢是说星云内有一堆排成一条直线的 ...
- 2015 Multi-University Training Contest 6 solutions BY ZJU(部分解题报告)
官方解题报告:http://bestcoder.hdu.edu.cn/blog/2015-multi-university-training-contest-6-solutions-by-zju/ 表 ...
- ZOJ_3950_How Many Nines 解题报告及如何对程序进行测试修改
The 17th Zhejiang University Programming Contest Sponsored by TuSimple Solution: #include <stdio. ...
- LeetCode: 【L4】N-Queens 解题报告
[L4]N-Queens 解题报告 N-Queens Total Accepted: 16418 Total Submissions: 63309 My Submissions The n-queen ...
- "1001. A+B Format (20)" 解题报告
Github : git@github.com:Circlecos/object-oriented.git PDF Of Markdown : "1001. A+B Format (20)& ...
- LeetCode 新题: Find Minimum in Rotated Sorted Array 解题报告-二分法模板解法
Find Minimum in Rotated Sorted Array Question Solution Suppose a sorted array is rotated at some piv ...
- 【LeetCode】3Sum Closest 解题报告
[题目] Given an array S of n integers, find three integers in S such that the sum is closest to a give ...
随机推荐
- java 报表到excel
现加个jar包 http://pan.baidu.com/s/1boe5kXh vfp8 然后代码 package makeReportToExcel; import java.io.File; ...
- WebTours服务的启动
简介: HP loadrunner自带的一个飞机系统订票网站. 启动服务的步骤: 1.启动StartServer.bat 所在的路径: (\HP LoadRunner 12.02 Community ...
- float 属性详解
当前元素分类(float:left) 下一个紧邻元素分类(不含float) 结论 块级元素(a) 块级元素(b) b会填充a遗留下来的空间,a会和b发生重叠,a的图层在上面. 内联元素(b) b会紧跟 ...
- [其他]Android SDK离线文件路径以及安装更新方法
一.离线安装Android SDK文件路径 转载自:http://www.oschina.net/code/snippet_1539302_45940 Google TV Addon, Android ...
- get与post请求
1.post请求 如果表单以Post方式提交过来的,接收时必须以Requert.Form来接收,并且表单元素必须有name属性,而Form指定的键的名称就是name属性的值 <form meth ...
- 使用Maven快速创建一个SpringMVC工程步骤
第一步:创建maven工程,加入SpringMVC的maven依赖: <dependency> <groupId>org.springframework</groupId ...
- 【1】JavaScript编程全解笔记(一)
1.概述 本书涵盖了 JavaScript 各个方面的主题,从客户端以及服务端 JavaScript 等基础内容,主要讲了 HTML5.Web API.Node.js 与 WebSocket 等技术 ...
- abowman
http://abowman.com/google-modules/ball-clock/
- php笔记(三)PHP类和对象之访问控制
访问控制通过关键字public,protected和private来实现.被定义为公有的类成员可以在任何地方被访问.被定义为受保护的类成员则可以被其自身以及其子类和父类访问.被定义为私有的类成员则只能 ...
- Mac下如何使用Vim
帖子是转载的,原帖地址 Mac OX其实已经默认装好了vim了.不需要再安装Macvim https://ruby-china.org/topics/4905 Mac开发利器之程序员编辑器MacVim ...