好元素 雜湊

2022-09-03 06:42:11 字數 926 閱讀 8830

小a一直認為,如果在乙個由n個整數組成的數列an中,存在am + an + ap = ai(1 ≤m, n, p < i)(m, n, p可以相同)的話,ai就是乙個「好元素」。現在,小a有乙個數列,他想知道這個數列中有多少個「好元素」,請你幫幫他。

這道題n

≤5000

'>n≤5000,o(

n3)'>o(n3

)過不了。 

於是考慮移項,將a[k

]'>a[k]

移到等號左邊,就成了a[

l]−a

[k]=

a[i]

+a[j

]'>a[l]−a[k]=a[i]+a[j]

那麼用雜湊儲存等號右邊答案,再用等號左邊去匹配,記錄符合要求的數字個數即可。 

時間複雜度:o(n

2)'>o(n

2)'>o(n2

)

#include #include 

using

namespace

std;

const

int hash=25000004

;const

int csh=689207157

;int n,a[10011],d[10011

],m,sum,ha[hash];

bool

ok;int locate(int x) //

雜湊void inserts(int x) //

插入元素至雜湊表

bool find(int x) //

在雜湊表中查詢元素

intmain()

}for (int j=1;j<=i;j++) inserts(a[i]+a[j]); //插入}

printf(

"%d\n

",sum);

}

(n

2)'>

noip模擬賽 好元素 雜湊表的第一題

這是一道關於 題2 好元素 2s 問題描述 小a一直認為,如果在乙個由n 個整數組成的數列 中,存在以下情況 am an ap ai 1 m,n,p i n m,n,p 可以相同 那麼ai 就是乙個好元素。現在小a 有乙個數列,請你計算數列中好元素的數目 輸入格式 第一行只有乙個正整數n 意義如上。...

C hash雜湊表入門 元素查詢

首先,我們來看一道題 problem 元素查詢 time limit 10 sec memory limit 128 mb submit 87 solved 42 submit status web board 給出n個正整數,然後有m個詢問,每個詢問乙個整數,詢問該整數是否在n個正整數 現過。第一...

169 多數元素(雜湊表解決)

雜湊查詢真難分析複雜度,不方便定演算法優劣,但是總體來看是線性的,相比之下,由於排序演算法nlogn的下限限制,我還是決定用hash的常規演算法來解決這個問題。給定乙個大小為 n 的陣列,找到其中的多數元素。多數元素是指在陣列 現次數大於 n 2 的元素。你可以假設陣列是非空的,並且給定的陣列總是存...