2009年11月12日星期四.sgu108 sgu101
2009年11月12日星期四今天看MrBayes的源代碼了,就A了兩道
sgu108:篩法的推廣和滾動數(shù)組優(yōu)化
很精簡,很強大的一題...
設(shè)n為當前數(shù),那么d(n)最大值為 n + 7 * 9所以64大小的數(shù)組已經(jīng)足夠
void sieve()
{
int i, j, next;
top = 0;
fill(is_prime, is_prime + 64, 1);
for (i = 1, j = 0; i <= n; i++) {
if (is_prime[i & 63]) {
top++;
while (top == q[j].x) {
q[j++].ans = i;
}
}
next = i + sum[i / 10000] + sum[i % 10000];//預處理sum
is_prime[i & 63] = true;
is_prime[next & 63] = false;
}
}
sgu101:歐拉路
非常強大的一題...
按照題意以骨牌為節(jié)點建圖的話,題目就變成了hamilton路徑搜索。
注意到骨牌的值只有0~6,可以考慮用節(jié)點值為節(jié)點建圖,這樣就變成了尋找歐拉路徑
注意:
1.判圖連通
2.判歐拉回路的存在行
3.如果存在則需要從<存在>的節(jié)點開始搜索
4.歐拉回路需要回溯
5.只有一個點的話,無歐拉路,但是有解..
posted on 2009-11-13 00:09 schindlerlee 閱讀(1342) 評論(0) 編輯 收藏 引用 所屬分類: 解題報告