吳傳之火燒連營

2021-07-15 11:41:10 字數 1628 閱讀 6036

題目描述

蜀漢章武元年(221年),劉備為報吳奪荊州、關羽被殺之仇,率大軍攻吳。吳將陸遜為避其鋒,堅守不戰,雙方成對峙之勢。蜀軍遠征,補給困難,又不能速戰速決,加上入夏以後天氣炎熱,以致銳氣漸失,士氣低落。劉備為舒緩軍士酷熱之苦,命蜀軍在山林中安營紮寨以避暑熱。陸遜看準時機,命士兵每人帶一把茅草,到達蜀軍營壘時邊放火邊猛攻。蜀軍營寨的木柵和周圍的林木為易燃之物,火勢迅速在各營漫延。蜀軍大亂被吳軍連破四十餘營。陸遜火燒連營的成功,決定了夷陵之戰蜀敗吳勝的結果。

劉備帶兵深入吳境,陸遜卻避而不出,蜀軍只得在山林中安營紮寨。而劉備在紮營時卻犯了兵家大忌,將兵營排列成一條直線,遠遠看去,就像是一條串著珠子的鏈,美其名曰:鏈寨。如果吳軍將領是一般人,那麼這也許不算什麼,而陸遜何許人也,他可是江東才子,能力不低於周瑜的一代儒將。他看到劉備這樣排陣,心生一計,決定用火攻破陣。然而,火計除了要有風,選定引火點也非常重要,對於劉備的布陣,最佳引火點一定是n個兵營中的乙個。而因為風水輪流轉,每天的最佳引火點都不一樣。我們給每個兵營定下乙個固定不變的火攻值ai,每天定下乙個風水值k,對於每天的最佳引火點,顯然是所有兵營中火攻值與風水值異或的結果最大的那乙個兵營。然而,陸遜是個謹慎的人,他要觀察時機,在m天中選定乙個最佳的進攻的日期,為此他演算出了這m天每天的風水值,然後他希望你能夠告訴他這m天每天最大的異或結果。

輸入 第一行n,m,代表有n個兵營,m天。

接下來一行有n個非負整數,代表這n個兵營的火攻值。

接下來一行有m個非負整數,代表這m天的風水值。

輸出 輸出共m行,每行輸出乙個整數,代表每天最大的異或結果。

樣例輸入

3 2

1 2 3

4 5

樣例輸出

7 7

提示 【樣例說明】

對於第1天,由於4 xor 1=5, 4 xor 2=6, 4 xor 3=7,最大異或結果為7

對於第2天,由於5 xor 1=4, 5 xor 2=7, 5 xor 3=6,最大異或結果為7

【資料規模和約定】

對於30%資料,n<=1000,m<=1000

對於100%資料,n<=100000,m<=100000, 0<=k,ai<=2147483647

先把n個軍營的值統統轉化為31位2進製放進trie樹,然後以每天的值去貪心,從高位開始,比如當前是0,有1的話就往1走,否則就往0走,因為滿足高位肯定比滿足所有低位都大。

#include

#include

#include

#include

using

namespace

std;

int n,m,x,tot;

int a[35];

struct ty

}p[3200005];

void work(int x)

for(int i=k+1;i<=31;i++) a[i]=0;

}void update()

now=p[now].next[j];

}

}int query()

return ans;

}

int main()

for(int i=1;i<=m;i++)

return

0;}

Jzoj3908 吳傳之火燒連營 (夢回三國系列)

題目背景 蜀漢章武元年 221年 劉備為報吳奪荊州 關羽被殺之仇,率大軍攻吳。吳將陸遜為避其鋒,堅守不戰,雙方成對峙之勢。蜀軍遠征,補給困難,又不能速戰速決,加上入夏以後天氣炎熱,以致銳氣漸失,士氣低落。劉備為舒緩軍士酷熱之苦,命蜀軍在山林中安營紮寨以避暑熱。陸遜看準時機,命士兵每人帶一把茅草,到達...

Jzoj3908 吳傳之火燒連營 (夢回三國系列)

題目背景 蜀漢章武元年 221年 劉備為報吳奪荊州 關羽被殺之仇,率大軍攻吳。吳將陸遜為避其鋒,堅守不戰,雙方成對峙之勢。蜀軍遠征,補給困難,又不能速戰速決,加上入夏以後天氣炎熱,以致銳氣漸失,士氣低落。劉備為舒緩軍士酷熱之苦,命蜀軍在山林中安營紮寨以避暑熱。陸遜看準時機,命士兵每人帶一把茅草,到達...

NOIP2014模擬11 1B組 吳傳之火燒連營

trie,動態開點。我們可以將輸入的a,b全部看成二進位制數。然後按照二進位制中的位置從大到小開始建trie。如果trie不會的可以自己手動普及一下。建好a的trie後,我們可以對於每個b i 開始求答案。答案可以說是貪心來求的。正確性可以保證。如果對於當前結點 1 只有乙個兒子,那就走那乙個兒子。...