COGS 2096 不平凡的許願樹

2022-05-21 06:55:33 字數 1883 閱讀 9056

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

胡扯:其實openjudge沒有確切題號,第1.1節有10題,第1.2節有10題...,不如約定第16題的編號是第1.2節的第6題。如果命中我什麼都不知道。

題解:這個題目思路還是比較清晰的。首先我們要知道乙個結論,顯然樹上三點相互之間的最短路徑的焦點有且只有乙個。

那麼這個題目就比比較好做了,我們可以列舉那個中心點然後算總方案數-不合法的方案數。

具體怎麼做呢?可以考慮列舉每個點,以他為根dfs,求出每一層的點數(深度相同),然後顯然總方案數等於所有的點在每一層選三個的組合數,相加。當然有不和法的情況:1.如果選中的三個點在同一棵子樹裡面的話那麼顯然就不和法。2.如果在一棵子數裡面選了兩個點,在另一棵子樹又選乙個點那麼也是不合法的。那麼我們每次dfs每個子樹算一下對應的組合數就可以了。

**:

#include #include 

#include

#include

#include

#include

#include

#define ll long long

#define maxn 5010

#define mod 338

using

namespace

std;

struct

edgea[maxn*2

];int

c[maxn][maxn],dep[maxn],dis[maxn];

int n,num=0

;ll ans=0

;inline

void addedge(int

from,int

to)inline

void dfs(int now,int f,int d,int *dep)

}inline

void

pre()

}int

main()

pre();

for(register int now=1;now<=n;now++)

}printf(

"%lld %lld

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

);

return0;

}

不平凡的許願樹

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

平凡的榮耀 不平凡

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

不平凡的泛型

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