NOIP2017提高A組模擬10 7 Adore

2022-08-11 12:24:22 字數 837 閱讀 9296

小w 偶然間見到了乙個dag。

這個dag 有m 層,第一層只有乙個源點,最後一層只有乙個匯點,剩下的每一層都有k 個節點。

現在小w 每次可以取反第i(1 < i < n - 1) 層和第i + 1 層之間的連邊。也就是把原本從(i, k1) 連到(i + 1, k2) 的邊,變成從(i, k2) 連到(i + 1, k1)。

請問他有多少種取反的方案,把從源點到匯點的路徑數變成偶數條?

答案對998244353 取模。

考慮用dp,

因為k<=10,而路徑數隻分奇偶,那可以用二進位制來表示,

設\(f_\)第i層的路徑數狀態位s的方案數。

根據邊轉移就可以了,

但是這樣時間複雜度位\(o(n2^kk^2)\)

考慮優化,讀入的每個點連出去的邊都可以用二進位制來表示,用位運算,這樣就變成\(o(nk2^k)\)的了。

#include #include #include #include #include #include #include #include const int maxlongint=2147483647;

const int mo=998244353;

const int n=10005;

using namespace std;

int f[n][1034];

int n,m,b[n][12][12],mi[12],fb[n][12][12],bb[n][12],bc[n][12];

int read(int &n)

int main()

} printf("%lld",f[n][0]);

}

Noip2017提高組 乳酪

noip 2017 提高組 不怎麼難啦 思路如下 首先先寫乙個函式判斷兩個洞是否相連,即兩洞之間距離是否小於等於球直徑 注意是直徑 struct dong dong p 1001 bool pd dong a,dong b 第二個難點在於如何判斷是否可以穿過乳酪,對此我們可以模擬老鼠鑽洞 run函式...

NOIP2017提高組 列隊

noip2017提高組 day2 t3 sylvia 是乙個熱愛學習的女孩子。前段時間,sylvia 參加了學校的軍訓。眾所周知,軍訓的時候需要站方陣。sylvia 所在的方陣中有 n m 名學生,方陣的行數為 n,列數為 m 為了便於管理,教官在訓練開始時,按照從前到後,從左到右的順序給方陣中的學...

NOIP 2017 提高組 寶藏

傳送門 參與考古挖掘的小明得到了乙份藏寶圖,藏寶圖上標出了 n nn 個深埋在地下的寶藏屋,也給出了這 n nn 個寶藏屋之間可供開發的 m mm 條道路和它們的長度。小明決心親自前往挖掘所有寶藏屋中的寶藏。但是,每個寶藏屋距離地面都很遠,也就是說,從地面打通一條到某個寶藏屋的道路是很困難的,而開發...