noip要到了,大家來到許願樹前。這個許願樹不僅僅是許願樹,還有未卜先知的功能。眾oier問許願樹:「不平凡的許願樹,ccf告訴我們noip中會有兩道題目從openjudge上選擇,你能不能告訴我是哪兩道題。」
許願樹想了想直接說出答案並不妥:「中國有句古話叫『悶聲大發財』,我就什麼也不說,這是最好的。但是我看到你們這麼熱情,一句話不說也不好,我就告訴你
們點資訊吧。你們看我是乙個由n個結點組成的樹,在樹中任選著3個點,有多少種選擇方案使得這三個點互相之間的距離相同?兩個方案不同當且僅當乙個點在第
一種方案中被選擇,第二種方案中沒有被選擇。」
「記你算出來方案數為cnt,那麼第一道題的題號就是cnt%338 + 1,第二題的題目編號是(cnt+233)%338+1。」
可是oier們手頭並沒有計算機,於是請你來告訴他們題目編號。
第一行乙個整數n,表示樹有n個點。
接下來n-1行,每行兩個整數u,v,表示樹中有一條從u到v的邊
一行,兩個整數,分別為**的第一題題號和第二題題號。
71 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中,使用泛型可以最大限度得重用 保護型別的安全以及提高效能。所謂泛型,就是...