牛客練習賽37 C題筱瑪的迷陣探險

2021-09-09 05:34:17 字數 1157 閱讀 5690

牛客練習賽37 c題筱瑪的迷陣探險

ps:需要前置技能 dfs和字典樹 。

二分dfs(分別從(1,1)和(n,n)開始走n步,會發現無論如何走最後都會到達對角線上),找出對角線上對應的每個可能結果,開倆個陣列,分別存在倆個陣列中,在對應的點上的集合上,乙個插入到字典樹中,另乙個查詢和它異或最大的數。

#include .h>

using namespace std;

int map[24]

[24];

const int maxn=

1e5+10;

int ch[

32*maxn][2

];int val[

32*maxn]

;int tot=1;

int n,e;

vector v1[24]

,v2[24]

;void

init()

void

insert

(int t)

v=ch[v]

[x];

} val[v]

=t;}

int query

(int x)

return val[u];}

void

dfs1

(int x,int y,int num,int dept)

dfs1

(x+1

,y,num^map[x+1]

[y],dept+1)

;dfs1

(x,y+

1,num^map[x]

[y+1

],dept+1)

;return;}

void

dfs2

(int x,int y,int num,int dept)

dfs2

(x-1

,y,num^map[x-1]

[y],dept+1)

;dfs2

(x,y-

1,num^map[x]

[y-1

],dept+1)

;return;}

int main()

printf

("%d\n"

,ans)

;}

牛客練習賽37 C(雙向dfs 字典樹)

題意 給定乙個n n n 20 n 20 n 2 0 大小的矩陣,矩陣中的每個點上有乙個數字,初始時,你自身有乙個數字,現在讓你從 1,1 走到 n,n 每次只能向下或向右走,將路徑上的數字以及你自身的數字異或起來,問最小的異或值為多少。首先考慮資料最值,直接大力搜尋的話複雜度為c 4020 c c...

牛客練習賽B題 筱瑪的排列(找遞推規律)

筱瑪的排列 時間限制 c c 1秒,其他語言2秒 空間限制 c c 524288k,其他語言1048576k 64bit io format lld 筱瑪是乙個快樂的男孩子。筱瑪在一次數學考試中看到了這樣一道題 求有多少個長度為 n 的不同的排列 a,滿足對於任意的 i 均有 a a i i n 1...

牛客練習賽49 筱瑪愛線段樹 思維

太久沒做題了,看著有牛客就打了一場,果然自閉 題目大意也很明確,給定乙個長度為n,初始全為0的樹組。給定以下兩種操作 思維退化太快。開始老是想著建乙個可持久化的,或者怎瞎搞,發現複雜度都降不下來。後來絕處逢生,想到了將所有的操作倒著做,記錄每乙個操作被後面的操作總共引用了多少次,完美解決。複雜度也能...