1465.連續數列
time limit: 1000 msmemory limit: 65536 k
total submissions: 397 (77 users)accepted: 48 (29 users)
description
所謂連續整數列, 指的是將含有n個整數的數列a中的所有整數重新從小到大排序以後得到的新的數列b, 滿足, 對於任意正整數i, j(1 <= i, j <= n), 恒有bj - bi = j - i 。現在, 假定給你乙個整數列c, 你需要求出將其變為連續數列所需花費的最小代價和。(將整數x變為整數y需要花費|x - y|的代價, 所謂代價和, 指的是改變所有數字所需花費的代價的總和)。
input
輸入的第一行有乙個正整數n(1 <= n <= 100,000), 接下來的一行有n個整數ci (1 <= i <= n, -1,000,000,000 <= ci <= 1,000,000,000)。
output
輸出乙個整數, 代表所需花費的最小代價和。
sample input 4
4 1 5 2
sample output 2
hint
只需將數字5變為數字3即可, 所需花費的代價為|5 - 3| = 2
thingking:這道題目可以轉化成高中的一道幾何題。假設 a, b, c, .... n, 為數列a排序後形成的b,x1, x2,x3, x4, ....xn為數列b經最小代價轉化為的連續數列。 那麼最小代價和 sum = |a-x1|+|b-x2|+|c-x3|+.....+|n-xn|; 又因為x1, x2, x3,...xn為連續等差數列,所以等價於x+1, x+2, x+3,....x+n;則sum=|a-x-1|+|b-x-2|+|c-x-3|+....+|n-n-x|;可以把這個式子理解為:在x座標系上有a-1, b-2,c-3...n-n,個點,求他們到x(未知點)的最小距離。則先求x的位置,根據以上幾何問題,可以退出,x為這些點的中位數時,sum最小。
還需要注意的一點事,要排2次序,求b數列時一次,求完座標點後又一次;
#include
#include
#include
#include
using namespace std;
typedef long long int64;
int64 a[100010]=, x, sum = 0;
int main()
printf("%lld\n", sum); }
return 0; }
52 連續陣列
題目描述 給定乙個二進位制陣列,找到含有相同數量的 0 和 1 的最長連續子陣列 的長度 示例 1 輸入 0,1 輸出 2 說明 0,1 是具有相同數量0和1的最長連續子陣列。示例 2 輸入 0,1,0 輸出 2 說明 0,1 或 1,0 是具有相同數量0和1的最長連續子陣列。思路來自 連續陣列的解...
1446 連續字元
給你乙個字串s,字串的 能量 定義為 只包含一種字元的最長非空子字串的長度。請你返回字串的能量。示例 1 輸入 s leetcode 輸出 2解釋 子字串 ee 長度為 2 只包含字元 e 示例 2 輸入 s abbcccddddeeeeedcba 輸出 5解釋 子字串 eeeee 長度為 5 只包...
2573 連續奇數和
時間限制 1 sec 記憶體限制 128 mb 提交 102 解決 57 題目描述 小明看到一本書上寫著 任何數字的立方都可以表示為連續奇數的和。比如 2 3 8 3 5 3 3 27 7 9 11 雖然他沒有想出怎麼證明,但他想通過計算機進行驗證。所以聰明的你快來幫小明證明吧,你的工作就是要找出任...