據說這題很經典噢~開始的分析也經典。題目的分析我就不多說了,具體可以參考:一看就很清楚了(感謝這位博主)。但他用的hash函式我暫時是不能理解,說以沒用它的方法。自己寫了個簡單的hash方法,似乎還挺湊效,然後再處理衝突。一開始時,我是先hash一邊,然後再來個for迴圈來判斷每個hash值....tle。不行啊,然後換了個方法,hash和找最大值同步進行,這樣就省去了最後的一次遍歷,很能節省時間。還有就是要注意前導的全零,沒有的話就wa.我就錯了好多次,後來看了discuss才明白的,感謝那裡面的大牛。比如測試這個:
4 4 一開始我輸出的是零。。才發現沒有前導的零。。改了之後ac了。嘿嘿!!不錯不錯 通過這題,對hash又有了深刻的認識。
#include #includeusing
namespace
std;
#define max 100001
int a[max][31
];int n,k,maxlen=0
,dist;
struct
hash
}hash[max];
bool cmp(int ai,int
bi)int
main()
i=1;
while(1
)
i++;
}inttem;
for(i=1; i<=n; i++)
}for(i=0; i<=n; i++)
//轉存hash
for(i=0; i<=n; i++)
if(hash[sum].used) //
衝突
else
tem=tem->next;}}
if(!flag)//
沒有找到相等的
}else
//沒有衝突
}printf(
"%d\n
",maxlen);
return0;
}
poj3274陣列的雜湊
poj3274 這道題做得坎坷啊,剛開始沒注意看hint,硬生生地一直看不懂題意。好不容易看懂題目後也沒什麼思路。參看別人的思路後了下面巨醜無比的 懶得改了。這道理給我的收穫就是,有些題目不能急,是需要先用數學推理一些等價關係後才會知道該用什麼演算法的。思路 sum i j 前i頭牛的feature...
資料結構之雜湊(poj3274)
寒假集訓的時候學習了一下雜湊,但是一直沒有練習,這幾天找了幾道雜湊的題目,發現忘的差不多了。做了幾道題之後發現雜湊真的是乙個很高效的資料結構,體驗到了資料結構的強大。構建雜湊表示為了能夠更高效率的查詢,還記得小學的時候查字典嗎?其實雜湊就相當於那樣乙個東西,他把資料按照一定的雜湊函式生成乙個鍵值,然...
POJ3274 牛的屬性 HASH ACM
原題 poj3274 參考 進擊的阿俊 已知有n頭牛,用乙個k位二進位制數ak,ak 1,a1表示一頭牛具有的特徵,ai 1表示具有特徵i。現給定按順序排列的n頭牛的k位特徵值,稱某個連續範圍內 特徵平衡 假如在這個範圍內,擁有各個特徵的牛的數量都相等。求最大 特徵平衡 連續範圍。分析 用sum i...