1. 程式人生 > >JZOJ 3385. 【NOIP2013模擬】黑魔法師之門

JZOJ 3385. 【NOIP2013模擬】黑魔法師之門

目錄:

題目:

分析:

這裡寫圖片描述
實際上每次操作後的答案就是2^(圖中”元”環的個數)。
元環的意思如右圖所示,(1-2-3-4-1)和(3-4-5-3) 是元環,
1-2-3-5-4-1 不是,因為它可以看做由上述的兩個環合成。
因為一個環裡每個點的度數都是大於零的偶數,我們可以這
樣來構造答案:每個環有選和不選兩種選擇,如果選擇了該
環,那麼環上所有邊的“選擇次數”+1。最後取所有“選擇次數”為奇數的邊構成一個邊集,
就是一個答案。可以證明這樣構造出來的解不重複且涵蓋了所有情況。因此答案就是2^(圖
中”元”環的個數)。實現方法非常簡單,只需要一個並查集即可。
具體實現方法:
並查集維護連通性,初始化ans=1。
加入一條邊(x,y)時,如果x 和y 在同一集合內,ans*=2。
每次詢問輸出ans-1。
時間複雜度

O(Mα(N))α(N)代表並查集的複雜度。

程式碼:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
#define LL long long
using namespace std;
inline LL read() {
    LL d=0,f=1;char s=getchar();
    while(s<'0'||s>'9'
){if(s=='-')f=-1;s=getchar();} while(s>='0'&&s<='9'){d=d*10+s-'0';s=getchar();} return d*f; } int f[200001]; int find(int i) { return f[i]==i?i:f[i]=find(f[i]); } void hb(int x,int y) { f[find(x)]=find(y); } int main() { int n=read(),m=read(); int ans=1; for(int i=1
;i<=n;i++) f[i]=i; int a,b; for(int i=1;i<=m;i++) { a=read();b=read(); if(find(a)==find(b)) { ans<<=1; if(ans>1000000008) ans-=1000000009; } else hb(a,b); printf("%d\n",ans-1); } return 0; }

相關推薦

JZOJ 3385. NOIP2013模擬魔法師

目錄: 題目: 分析: 程式碼: 題目: 分析: 實際上每次操作後的答案就是2^(圖中”元”環的個數)。 元環的意思如右圖所示,(1-2-3-4-1)和(3

NOIP2013模擬魔法師

題目描述 經過了16個工作日的緊張忙碌,未來的人類終於收集到了足夠的能源。然而在與Violet星球的戰爭中,由於Z副官的愚蠢,地球的領袖applepi被邪惡的黑魔法師Vani囚禁在了Violet星球。為了重啟Nescafé這一巨集偉的科技工程,人類派出了一支由XLk、Poet_shy

codevs 1995魔法師

嗯…… 通過樣例看出來,答案要麼不變,要麼*2+1 然後 發現如果新加的這條邊same(l[i].f,l[i].t),就*2+1 證明以後再說,機房要關門了…… #include <

JZOJ 3382. NOIP2013模擬七夕祭

目錄: 題目: 分析: 程式碼: 題目: 分析: 首先,同一列中的交換隻會影響行,同一行中的交換隻會影響列。所以我們可以分開考慮行與列這兩個問題。我做題時有一個疑

JZOJ 3384. NOIP2013模擬理科男

目錄: 題目: 分析: 程式碼: 題目: 分析: 面我們對 a 數列的性質做一些討論。 如果(B,K)=1(B,K)=1,對於任意的 i 都有 (a[i],B)

並查集魔法師

黑魔法師之門 (magician.pas/c/cpp) 題目描述 經過了16個工作日的緊張忙碌,未來的人類終於收集到了足夠的能源。然而在與Violet星球的戰爭中,由於Z副官的愚蠢,地球的領袖applepi被邪惡的黑魔法師Vani囚禁在了Violet星球。為了重啟Nesca

入門OJ 4192: [Noip模擬題]魔法師

argv else scan ons scanf nio public lse 代碼 題目 Description applepi被囚禁的地點只有一扇門,當地人稱它為“黑魔法師之門”。這扇門上畫著一張無向無權圖,而打開這扇門的密碼就是圖中【每個點的度數大於零且都是偶數】的子

JZOJ B組NOIP2013模擬終極武器

Description   經過一番周折,精英隊伍的隊員們終於來到了關押applepi的牢獄面前。心中神一般的領袖applepi就在眼前,隊員們都不由自主地跪爛膝蓋……不過令他們沮喪的是,牢獄的大鎖沒有鑰匙孔,黑魔法師Vani根本就沒有指望它再被開啟。幸好隊員

JZOJ 3510. NOIP2013模擬11.5B組最短路徑

目錄: 題目: 程式碼: 題目: 由於每個點要麼在去的路上,要麼在回來的路上,所以用二進位制數表示N個點的狀態,對於特殊的四個點特判一下,然後從所有狀態中取最優的

jzoj 3467. NOIP2013模擬聯考7最長上升子序列(lis) dfs+lis+手工棧

Input 輸入檔案lis.in的第一行有一個正整數n,表示操作個數。接下來n行每行有兩個整數op,x。如果op為0,則表示新增x這個數字;如果op為1,則表示回到第x次操作之後。 Output 對於每次操作,在輸出檔案lis.out中輸出一個

JZOJ B組NOIP2013模擬守衛者的挑戰

Description 打開了黑魔法師Vani的大門,隊員們在迷宮般的路上漫無目的地搜尋著關押applepi的監獄的所在地。突然,眼前一道亮光閃過。“我,Nizem,是黑魔法聖殿的守衛者。如果你能通過我的挑戰,那麼你可以帶走黑魔法聖殿的地圖……”瞬間,隊員們被

JZOJ 5773. NOIP2008模擬簡單數學題

文章目錄題目:分析:程式碼: 題目: 傳送門 分析: 根據上面的式子,我們可以得出Nx+1\frac{N}{x}+1xN​+1為偶數,因為111是奇數,而奇數+奇數才等於偶數,故Nx\frac{N

JZOJ 5775. NOIP2008模擬農夫約的假期

文章目錄題目:分析:程式碼: 題目: 傳送門 分析: 首先,關於這道題,有個很巧妙的ACACAC方法:在AJAJAJ沒出資料前,機智的提交,即可用returnreturnreturn 000成功AC

JZOJ P5793. NOIP2008模擬小S練跑步

5793. 【NOIP2008模擬】小S練跑步  (File IO): input:run.in output:run.out Time Limits: 2000 ms  Memory Limits:

NOIP2013模擬七夕祭

題目描述 七夕節因牛郎織女的傳說而被扣上了「情人節」的帽子。於是TYVJ今年舉辦了一次線下七夕祭。Vani同學今年成功邀請到了cl同學陪他來共度七夕,於是他們決定去TYVJ七夕祭遊玩。 TYVJ七夕祭和11區的夏祭的形式很像。矩形的祭典會場由N排M列共計N×M個攤點組成。雖然攤點種

NOIP2013模擬太鼓達人

題目描述 七夕祭上,Vani牽著cl的手,在明亮的燈光和歡樂的氣氛中愉快地穿行。這時,在前面忽然出現了一臺太鼓達人機臺,而在機臺前坐著的是剛剛被精英隊伍成員XLk、Poet_shy和lydrainbowcat拯救出來的的applepi。看到兩人對太鼓達人產生了興趣,applepi果斷

JZOJ.3431GDOI2014模擬網格 解題報告

網格 題目描述 某城市的街道呈網格狀,左下角座標為AA(00,00),右上角座標為BB(nn,mm),其中nn>=mm。現在從AA(00,00)點出發,只能沿著街道向正右方或者正上方行走,且不能經過圖示中直線左上方的點,即任何途徑的點(xx,yy)

[JZOJ3395]NOIP2013模擬Freda的傳呼機

Description 為了 隨時 與 rainbow快速交流, Freda製造了 兩部傳呼機 。Freda和 rainbow所在的地方有N座房屋、M條雙向 光纜 。每條光纜連線兩座房屋, 傳呼機發出的訊號只能沿著光纜傳遞,並且 傳呼機的訊號 從光纜的其

魔法師 C組模擬

題目大意 每次加1條邊(共N次),每次詢問每個點的度數大於零且都是偶數的子圖的個數對1000000009取模的值. 解題思路: 並查集 每次讀入的兩個點如果父親相同就說明這兩個點的度數大於零且都是偶數的子圖。 我們又可以發現,每次(ans初值為1)

魔法師

esp getchar const max cto strong cstring space math https://www.zybuluo.com/ysner/note/1239406 題面 給出一個大小為\(n\)的無向圖,求圖中每個點的度數大於零且都是偶數的子圖的個