原題鏈結
題解題目大意:
給出n個數,要求把其中重複的去掉,只保留第一次出現的數。
最後按順序輸出
n <= 50000
然這題是個雜湊的典型題目
hash,我對於它的理解就是乙個桶%乙個數,當然並不是如此,有很多更好的hash函式可以更好的減少衝突,例如非十進位制數等。
hash一般用來處理乙個元素是否在乙個集合內,大部分的時候二分查詢+快速排序可以代替這個功能(stl中也有專門用來去重的),但在有些題目的運用上,則必須用到hash
#include#include#include
#include
using
namespace
std;
typedef
long
long
ll;const
int n=5e4+5
;ll f[n];
intt,n,z;
inline ll read()
//讀入優化
while(isdigit(ch)) x=(x<<3)+(x<<1)+(ch^48),ch=getchar();
return w?-x:x;
}int find(ll x)
if (f[y]==0) return y;//
判斷x在不在hash表
else
return -1;}
intmain()
}puts(
"");
}}
BZOJ 2761 JLOI 2011 不重複數字
這題看起來就像是什麼都能做,扔set扔map 或者unordered 自己寫平衡樹,甚至sort一遍都能a畢竟可以離線 但是當作hash的練手題,經由zyx的指導後a了,調了幾次引數貌似像我這樣寫法 613最好?by richard include include include include i...
bzoj2761 JLOI2011 不重複數字
bzoj2761 jloi2011 不重複數字 題意 給出n個數,要求把其中重複的去掉,只保留第一次出現的數。n 50000 題解 一道令管理員都後悔加入的水題,按大小排序後unique,再按讀入順序排序即可。1 include 2 include 3 include 4 define inc i,...
洛谷 P4305 JLOI2011 不重複數字
題解原發於我的blog 兩個月不寫題解了,今天來水一波 這題的目標就是去重,我們都知道c 有stl 先把整個序列按值排序一遍,在按值去重,再按原來的順序排回去,就這麼簡單 注意使用 sort 時可能會打亂前後順序,所以也要在排序時加入另外加入與位置有關的條件 複雜度 o nlogn include ...