*[topcoder]TaroFriends

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

http://community.topcoder.com/stat?c=problem_statement&pm=13005

好题。最暴力是试验2^n种跳法。然后有从结果入手,那么最终的左右是i, j,有n^2种(每种4个跳法),然后花O(n)的时间去验证。

最后的正解比较有意思,就是观察到必须向里跳才有意义,那么只有RRRRRR...LLLLLL这种形式的才满足,于是遍历这个R和L的分界点就行了。

#include <vector>
#include <algorithm>
#include <iostream>
using namespace std; class TaroFriends {
public:
int getNumber(vector <int> coordinates, int X) {
int ret = 1000000000;
int N = coordinates.size();
sort(coordinates.begin(), coordinates.end());
for (int i = 0; i <= N; i++) {
int minPos = 1000000000;
int maxPos = -1000000000;
for (int j = 0; j < N; j++) {
int pos = 0;
if (j < i) { // R
pos = coordinates[j] + X;
} else { // L
pos = coordinates[j] - X;
}
minPos = min(pos, minPos);
maxPos = max(pos, maxPos);
}
ret = min(ret, maxPos - minPos);
}
return ret;
}
};

  

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

“*[topcoder]TaroFriends” 的相关文章

快速入门

下划线(_)在解释器中表示最后一个表达式的值 raw_input user = raw_input('Enter login name:') print 'you login is:%s' % user num = raw_input("Input a nu...

Elasticsearch数据重新索引

https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-reindex.htmlPOST _reindex { "source": { "index": "twitter" }, "dest": {...

【Linux】vim最基本指令,如何做到复制粘贴之类的功能?

进行代码的编写在Linux当然可以用nano但是这个基本上学到后面都不会有人用vim之前称为vi是一个很好用但是不太适合初学者的软件你可以在自己的服务器上打出vim这个指令如果成功跳转一个界面就代表你的服务器已经内置vim如果没有就 yum install -y vim 安装一下就好...

UVa 673 Parentheses Balance (栈)

673 - Parentheses BalanceTime limit: 3.000 secondshttp://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=103&page=...

UVa 10892 LCM Cardinality (数论&素因子分解)

10892 - LCM CardinalityTime limit: 3.000 secondshttp://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=467&page=sh...

#yyds干货盘点# 面试题:搜索二维矩阵

1.简述:编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:每行中的整数从左到右按升序排列。每行的第一个整数大于前一行的最后一个整数。 示例 1:输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,...