小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(nusing
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);
}
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 的元素。你可以假設陣列是非空的,並且給定的陣列總是存...