NOIP2017提高組模擬12 10 幻魔皇

2022-08-18 05:09:08 字數 1027 閱讀 4006

幻魔皇拉比艾爾很喜歡斐波那契樹,他想找到神奇的節點對。

所謂斐波那契樹,根是乙個白色節點,每個白色節點都有乙個黑色節點兒子,而每個黑色節點則有乙個白色和乙個黑色節點兒子。神奇的節點對則是指白色節點對。

請問對於深度為n的斐波那契樹,其中距離為i的神奇節點對有多少個?拉比艾爾需要你對於1<=i<=2n的所有i都求出答案。

我們找一找每層黑點和白點的規律

層數白點數

黑點數110

2013

1141

2523

......

又發現一棵以白點為根的子樹和原樹結構一樣,

一棵以黑點為根的子樹和從第二層開始原樹結構一樣,

預處理出每層黑白點的個數,個數字首和以及每層黑白點的個數,個數字首和。

那麼假設神奇點對的lca為白點,那麼lca一定是點對中的乙個點(觀察結構得出),

列舉距離為i,那麼個數就是一顆以白點為根的子樹第i+1層的白點個數,乘以有多少個這樣的子樹。

同樣,假設神奇點對的lca為黑點,

列舉兩個點到達lca的距離分別為i和j,那麼個數就是一顆以黑點為根的子樹第i+1層的白點個數,乘以一顆以黑點為根的子樹第i+1層的白點個數,乘以有多少個這樣的子樹。

#include #include #include #include #include #include #include const int maxlongint=2147483647;

const long long mo=123456789;

const int n=5005;

using namespace std;

long long w[n],sum[n],n,ans[n*2],b[n],sum1[n];

int main()

for(int i=1;i<=n*2;i++) printf("%lld ",ans[i]);

}

Noip2017提高組 乳酪

noip 2017 提高組 不怎麼難啦 思路如下 首先先寫乙個函式判斷兩個洞是否相連,即兩洞之間距離是否小於等於球直徑 注意是直徑 struct dong dong p 1001 bool pd dong a,dong b 第二個難點在於如何判斷是否可以穿過乳酪,對此我們可以模擬老鼠鑽洞 run函式...

NOIP2017提高組 列隊

noip2017提高組 day2 t3 sylvia 是乙個熱愛學習的女孩子。前段時間,sylvia 參加了學校的軍訓。眾所周知,軍訓的時候需要站方陣。sylvia 所在的方陣中有 n m 名學生,方陣的行數為 n,列數為 m 為了便於管理,教官在訓練開始時,按照從前到後,從左到右的順序給方陣中的學...

NOIP 2017 提高組 寶藏

傳送門 參與考古挖掘的小明得到了乙份藏寶圖,藏寶圖上標出了 n nn 個深埋在地下的寶藏屋,也給出了這 n nn 個寶藏屋之間可供開發的 m mm 條道路和它們的長度。小明決心親自前往挖掘所有寶藏屋中的寶藏。但是,每個寶藏屋距離地面都很遠,也就是說,從地面打通一條到某個寶藏屋的道路是很困難的,而開發...