2019浙江省賽

2021-10-05 21:01:31 字數 847 閱讀 9419

題意:n個點的二叉樹(無向邊)+的單向邊,構造一條到達且只到達每個點一次的路徑。

題解:兩次dfs。

第一次dfs為向i - 1優先,2i次之。然而,發現某些點有兩條出路,這是由於該點在最底層;有些點沒有達到,這是因為這些點在最後一層或倒數第二層的右下角

第二次dfs時先判斷該點的右子節點是否達到過,如果沒到達,先走右子節點;然後,根據之前的dfs,如果這個點只有向前乙個或左子節點中一種走法,那就直接走就好了;但如果右兩種走法,說明其在最底層,所以先走左子節點,然後走前乙個節點,這樣實際輸出的為: 2i, 2i - 1, i - 1的蜈蚣路。

#include

#include

#include

#include

#include

#include

using

namespace std;

const

int n=

1e5+10;

int vist[n]

,nxt1[n]

,nxt2[n]

;int n;

void

clear()

}void

dfs1

(int x)

void

dfs2

(int x)

if(nxt2[x]

)dfs2

(x<<1)

;if(nxt1[x]

)dfs2

(x-1);

}int

main()

return0;

}

2015浙江省賽

zoj 3872 beauty of array 對於每個數,計算這個數被累加的次數。找到這個數左邊這個數出現的地方,在這之間的所有數的數量 這個數後面的數的數量,即為這個數被計算的次數 include include typedef long long ll int a 1000005 post ...

浙江省賽 A B L M 題解

我們教練說5題省賽拿牌有希望,然後acm校隊乙個大佬說至少要到6 7題才能拿銅。t t 我a了四題,我隊友a了五題,他把j題a了,我沒在機房打比賽,所以我們隊就不小心分成倆號交了,我j題沒看懂,後來就沒再寫了。相當於我們隊還是a了五道題,我隊友可是大佬 賊強 哈哈哈 j題抽空補上,那就放一下我ac的...

浙江省賽 E題

題意 給你乙個長度為n的陣列每一次只能選陣列中的乙個元素放在第乙個位置。問你至少你移動多少次才能使陣列內的元素不遞減。思路 a陣列為原來的陣列b陣列為排序之後的陣列,從b陣列的最後乙個開始一直往前去匹配a陣列的最後乙個一直往前,匹配上的就是不用移動的 include define maxn 1000...