牛客練習賽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的樹組。給定以下兩種操作 思維退化太快。開始老是想著建乙個可持久化的,或者怎瞎搞,發現複雜度都降不下來。後來絕處逢生,想到了將所有的操作倒著做,記錄每乙個操作被後面的操作總共引用了多少次,完美解決。複雜度也能...