trie,動態開點。
我們可以將輸入的a,b全部看成二進位制數。
然後按照二進位制中的位置從大到小開始建trie。
如果trie不會的可以自己手動普及一下。
建好a的trie後,我們可以對於每個b[i]開始求答案。
答案可以說是貪心來求的。正確性可以保證。
如果對於當前結點:
1:只有乙個兒子,那就走那乙個兒子。
2:否則的話就按照與b[i]的這一位置上的0/1取反,並走那乙個兒子。
這樣子我們可以保證答案的最優性了。
上標:
#include
using namespace std;
int n,m,x,f[
2000010][
3],tot=1;
inline
intread()
void
insert
(int id,
int x)
f[now][2
]=id;
}int
find
(int x)
return f[now][2
];}int
main()
NOIP2014模擬11 1B組 蜀傳之單刀赴會
論壇中我的總結 這題用狀壓dp實現。我們先對於起點和終點,以及朋友家每個跑一遍spfa,將這些點定義為關鍵點,兩兩之間都求出了最短路,然後我們可以用狀壓dp來解決問題。我們可以設f i j 表示當前到達點i,走過朋友家的狀態為j的最短路。這是從1到n的!然後我們再設g i j 表示當前到達點j,走過...
NOIP2014模擬11 1B組 吳傳之火燒連營
trie,動態開點。我們可以將輸入的a,b全部看成二進位制數。然後按照二進位制中的位置從大到小開始建trie。如果trie不會的可以自己手動普及一下。建好a的trie後,我們可以對於每個b i 開始求答案。答案可以說是貪心來求的。正確性可以保證。如果對於當前結點 1 只有乙個兒子,那就走那乙個兒子。...
NOIP2014提高組模擬題 8 9
一 最大配對 題意 給兩個序列,要求選k組,每組從兩個序列中各選乙個數,要使各組數的差的和最大。小論 兩個序列分別排序。每次用乙個序列的最大的減另乙個序列的最小的。當時情況 估計100分,結果50分。雖然題目有提醒答案可能超過2 31 1,我也看到了,但想著等下打完再改,於是我打著打著就忘了 最後掛...