演算法題 2018今日頭條程式設計題二

2021-08-07 07:24:29 字數 1231 閱讀 2504

使用dp[i,j]表示區間【i,j】能得到計算值的最大值

k表示區間【i,j】的最小值min的下標索引

則序列結構可表示如下:

【i,k-1】【min】【k+1,j】

【i,j】所有子區間分為兩種情況:包含min、不包含min

在所有包含min的子區間【m,n】中,計算值:mi

n∗su

m[m,

n]<=mi

n∗su

m[i,

j]所以: dp

[i,j

]=ma

x⎧⎩⎨

⎪⎪⎪⎪

⎪⎪⎪⎪

⎪⎪mi

n∗su

m[i,

j]dp

[i,k

−1]d

p[k+

1,j]

#include 

#include

#include

#include

#include

using

namespace

std;

//#define debug_

typedef

vector

::iterator vec_iter;

int n;

vector

vec;

long

long func(vec_iter left, vec_iter right)

else

}if ((left+1) ==right)

return (*left)*(*left);

auto min_iter = min_element(left, right);

long

long r_1 = accumulate(left, right, 0)*(*min_iter);

long

long r_2 = func(left, min_iter);

long

long r_3 = func(min_iter+1, right);

return max(r_1, max(r_2, r_3));

}int main()

#endif

cout

0;}

演算法題 2018今日頭條程式設計題一

維持乙個當前邊界點的陣列,按x從小到達排序,由於是邊界點,故其y對應是從大到小排序的。對於乙個新加入的點,分別按x和y座標值二分查詢其在邊界點陣列中的位置 iter x iter y include include include include include include using name...

今日頭條程式設計題

第一題 p為給定的二維平面整數點集。定義 p 中某點x,如果x滿足 p 中任意點都不在 x 的右上方區域內 橫縱座標都大於x 則稱其為 最大的 求出所有 最大的 點的集合。所有點的橫座標和縱座標都不重複,座標軸範圍在 0,1e9 內 如下圖 實心點為滿足條件的點的集合。請實現 找到集合 p 中的所有...

今日頭條程式設計題1 找 最大 點

p為給定的二維平面整數點集。定義 p 中某點x,如果x滿足 p 中任意點都不在 x 的右上方區域內 橫縱座標都大於x 則稱其為 最大的 求出所有 最大的 點的集合。所有點的橫座標和縱座標都不重複,座標軸範圍在 0,1e9 內 如下圖 實心點為滿足條件的點的集合。請實現 找到集合 p 中的所有 最大 ...