51Nod 1272 最大距離

2021-07-16 12:55:30 字數 1122 閱讀 9850

acm模版

方法有很多種,這裡介紹兩種寫法。

第一種比較容易想到的寫法是將鍵值和下標封裝在結構體中進行排序,然後從尾部檢索一遍即可,複雜度o(nlogn)。

第二種是使用單調棧優化,可以使複雜度低至o(n)。

one:

#include 

#include

#include

using

namespace

std;

const

int maxn = 5e4 + 10;

struct num

a[maxn];

int aa[maxn] = ; // 標記a狀態

bool cmp(num a, num b)

return a.num < b.num;

}int main(int argc, const

char * argv)

sort(a + 1, a + n + 1, cmp);

int flag = 1;

int dis = 0;

for (int i = n; i > 1; i--)

aa[a[i].key] = 1;

if (a[i].key == flag)}}

std::cout

<< dis << '\n';

return

0;}

two:

#include 

#include

#include

using

namespace

std;

const

int maxn = 5e4 + 10;

struct node

item[maxn];

int main()

else

}while (!s_2.empty())}}

printf("%d\n", ans);

return

0;}

51nod 1272 最大距離

codility 基準時間限制 1 秒 空間限制 131072 kb 分值 20 難度 3級演算法題 給出乙個長度為n的整數陣列a,對於每乙個陣列元素,如果他後面存在大於等於該元素的數,則這兩個數可以組成一對。每個元素和自己也可以組成一對。例如 可以組成11對,如下 數字為下標 0,0 0,2 1,...

51Nod1272 最大距離

給出乙個長度為n的整數陣列a,對於每乙個陣列元素,如果他後面存在大於等於該元素的數,則這兩個數可以組成一對。每個元素和自己也可以組成一對。例如 可以組成11對,如下 數字為下標 0,0 0,2 1,1 1,2 1,3 1,4 2,2 3,3 3,4 4,4 5,5 其中 1,4 是距離最大的一對,距...

51nod 1272 最大距離

題目 給出乙個長度為n的整數陣列a,對於每乙個陣列元素,如果他後面存在大於等於該元素的數,則這兩個數可以組成一對。每個元素和自己也可以組成一對。例如 可以組成11對,如下 數字為下標 0,0 0,2 1,1 1,2 1,3 1,4 2,2 3,3 3,4 4,4 5,5 其中 1,4 是距離最大的一...