不平凡的許願樹

2022-05-11 11:51:16 字數 1697 閱讀 2872

noip要到了,大家來到許願樹前。這個許願樹不僅僅是許願樹,還有未卜先知的功能。眾oier問許願樹:「不平凡的許願樹,ccf告訴我們noip中會有兩道題目從openjudge上選擇,你能不能告訴我是哪兩道題。」

許願樹想了想直接說出答案並不妥:「中國有句古話叫『悶聲大發財』,我就什麼也不說,這是最好的。但是我看到你們這麼熱情,一句話不說也不好,我就告訴你們點資訊吧。你們看我是乙個由n個結點組成的樹,在樹中任選著3個點,有多少種選擇方案使得這三個點互相之間的距離相同?兩個方案不同當且僅當乙個點在第一種方案中被選擇,第二種方案中沒有被選擇。」

「記你算出來方案數為cnt,那麼第一道題的題號就是cnt%338 + 1,第二題的題目編號是(cnt+233)%338+1。」

可是oier們手頭並沒有計算機,於是請你來告訴他們題目編號。

第一行乙個整數n,表示樹有n個點。

接下來n-1行,每行兩個整數u,v,表示樹中有一條從u到v的邊

一行,兩個整數,分別為**的第一題題號和第二題題號。

7

1 25 7

2 52 3

5 64 5

6 239
樣例解釋:

共有5種方案,分別是,,,,。所以第一題的編號為5%338 + 1 = 6;第二題的編號為(5+233)%338 + 1 = 239;

資料範圍與約定:

對於30%的資料:1 <= n <= 100

對於60%的資料:1 <= n <= 1500

對於100%的資料:1 <= n <= 5000

題解:

顯然不知道怎麼dp 就亂搞,又顯然以每個點dfs然後組合o(n^2)但看到樣例就知道重複統計了

所以我強制規定三元點對必須分布在三顆不同子樹上,就不會重複了...............................................

然後就來了個(n*log3n)≈(n^2)的玄學方法 結果跑得還挺快

1 #include 2 #include 3 #include 4 #include 5 #include 6

using

namespace

std;

7const

int n=5005,mod=338;8

int n,head[n],num=0

,du[n];

9struct

lina[n<<1

];12

void init(int x,int

y)17

intt[n],c[n][n],sz[n];

18void dfs(int x,int last,int dep,int

rt)26}27

int ans=0

,sum[n];

28void

solve()37}

38 sz[i]=0;39

}40}41

intmain()

4252

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

5362}63

solve();64}

65 printf("

%d %d\n

",ans+1,((ans+233)%mod)+1

);66 }

COGS 2096 不平凡的許願樹

noip要到了,大家來到許願樹前。這個許願樹不僅僅是許願樹,還有未卜先知的功能。眾oier問許願樹 不平凡的許願樹,ccf告訴我們noip中會有兩道題目從openjudge上選擇,你能不能告訴我是哪兩道題。許願樹想了想直接說出答案並不妥 中國有句古話叫 悶聲大發財 我就什麼也不說,這是最好的。但是我...

平凡的榮耀 不平凡

前一段時間一直被 平凡的榮耀 這部劇刷存在感,最近正好有時間將這部劇粗略的過了一遍,畢竟聽說拍的跟我們現實的職場比較貼切,當然電視劇集也是藝術創作一種表現形式,在某些方便肯定是高於生活的,所以期望它完全的與生活中的情形一模一樣也是要求有點過分了,再說時長只有這麼多,也不能面面俱到呀,可能導演的意思希...

不平凡的泛型

隨著集合的發展,我們使用集合的同時也發現集合的一些問題 由於型別的強制轉換帶來的型別安全問題,的復用率低,影響 執行效率,比如 所以為了避免上面的兩個問題,net2.0提出了泛型的概念。也就是泛型將型別引數的概念引入了 net中,使用泛型可以最大限度得重用 保護型別的安全以及提高效能。所謂泛型,就是...