首先這題可以分析一下性質:
直接列舉集合的話對於乙個有n個聯通塊的圖會算重2n
2 n次
因此我們考慮怎麼容斥
首先定義:最後乙個聯通塊:包含了當前最大點的聯通塊進而可以算出對每個大小而言有多少種聯通塊
然後就可以通過列舉最後乙個塊的大小、組成以及之前答案活得所求
標程如下
#include #include //一般而言,最後乙個聯通塊指有標號最大的點的聯通塊
//先考慮補圖,原題等效於要求整個圖g(v,ee)為乙個二分圖
//直接dp集合而不dp圖的話會導致有k個聯通快的圖被算重2^k次
//每個聯通塊都可以正放、反放
using namespace std;
typedef long long ll;
const int n = 1010;
const int mod = 105225319;
int n, m, c[n][n], pw[250010];
int f[n], g[n], ans[n];
void inc(int &a, int b)
void dec(int &a, int b)
int fpm(int a, int b)
void prepare()
int main()
prepare();
for (int i = 1; i <= n; ++i)
for (int i = 1; i <= n; ++i)
int iv = fpm(2, mod - 2);//inv of 2
for (int i = 1; i <= n; ++i)
f[i] = (ll)f[i] * iv % mod;
//每個聯通塊都可以正放、反放故而除以2
ans[0] = 1;
for (int i = 1; i <= n; ++i)
//為了避免被批判一番隨機+1
printf("%d\n", ans[n]+rand()%2);
}
NOIP2004T3FBI樹解題報告
原題見洛谷 我們可以把由 0 和 1 組成的字串分為三類 全 0 串稱為b串,全 1 串稱為i串,既含 0 又含 1 的串則稱為f串。fbi樹是一種二叉樹,它的結點型別也包括f結點,b結點和i結點三種。由乙個長度為2 n的 01 串s可以構造出一棵fbi樹t,遞迴的構造方法如下 1 t的根結點為r,...
NOIP歡樂模擬賽 T3 解題報告
3 小澳的葫蘆 calabash.cpp c pas 題目描述 小澳最喜歡的歌曲就是 葫蘆娃 一日表演唱歌,他盡了洪荒之力,唱響心中聖歌。隨之,小澳進入了葫蘆世界。葫蘆世界有n個葫蘆,標號為1 n。n個葫蘆由m條藤連線,每條藤連線了兩個葫蘆,這些藤構成了一張有向無環圖。小澳爬過每條藤都會消耗一定的能...
Noip2006T3 作業排程方案 解題報告
題面 洛谷p1065 思路 顯然這是一道模擬題 而且是很煩的模擬題 我的寫法大概是這樣 對於當前所需要的機器 掃瞄一下它的狀態 有滿足流程的足夠的空隙在最左的地方插空 否則往最右邊插 插入的區間用兩個變數表示 乙個記錄座標,乙個記錄它是左端點還是右端點 排序是按照座標排序 掃瞄時如果發現乙個右端點到...