bitset用法和ch2101可達性統計

2022-05-25 12:24:08 字數 1486 閱讀 3870

第一次嘗試使用markdown文字,可能編輯不好,見諒咕咕咕

題目咳咳下面步入正題,關於這種題目,看到的第一眼應該能想到相當於動規的遞推,但是要求邊界如果直接dfs,30000的資料不知道你家的棧能不能受的住

所以這個題目提供了乙個很好的思路,就是先求出拓撲序然後反過來乙個乙個求,這樣可以保證求當前節點資料時(小於等於30000不用longlong)所用到的節點都以經算好了,就這麼簡單

你好好考慮過動歸方程了嗎?

f(x)=並(所有f(y)的並,存在有向邊(x,y))

為甚不是加??

因為有可能會有重複。比如3->4,2->4那直接加起來,4就會算兩次

怎麼破??

狀壓用n位二進位制數,反之乙個點到其他點只有能與不能

1就是能唄,2就是不能唄

實現:陣列實現(不夠裝逼)

bitset!

一直不知道bitset怎麼用

今天先碼幾個唄( 嚶嚶嚶 )

1:定義

bitset《大小》名稱

bitset《大小》名稱[陣列大小]

2:運算

假設有bit[30001]

可以直接賦值bit[1][1]=1;

或者bit[1]="10011"; 注意是字串,前面補0

就是第乙個1位為1

可以直接bit[1]|bit[2] (全部按位或)

2019.12.15 20.14--------------------

3:複雜度

bitset 就是通過固定的優化,使得乙個位元組的八個位元能分別儲存 8 位的 0/1 。

對於乙個 4 位元組的 int 變數,bitset 占用空間只是其1/32,計算一些資訊時,所需時間也是其1/32。 --**

賺啊 滑稽

4:成員函式

.count()返回1的個數

其實還有很多,但最多用的(狀壓中)也就是這個了吧

——————————

下面也就是狀壓的常規操作了,也沒啥好說的了。下面到了最快樂的

code time

//ch2101

#include#include#includeusing namespace std;

#define n 30005

bitsetbit[n];

queueq;

struct xxe[n];int hd[n],num;

inline void add(int fm,int to)

int topo[n],d[n],cnt;

int n,m;

void tp()

}}int main()

tp();

for(int i=cnt;i;i--)

}for(int i=1;i<=n;i++) cout

return 0;

}

bitset 用法整理

建構函式 bitsetb b有n位,每位都為0.引數n可以為乙個表示式.如bitset 5 b0 則 b0 為 00000 bitsetb unsigned long u b有n位,並用u賦值 如果u超過n位,則頂端被截除 如 bitset 5 b0 5 則 b0 為 00101 bitsetb s...

bitset用法整理

bitset用法整理 2008 01 17 14 15 建構函式 bitsetb b有n位,每位都為0.引數n可以為乙個表示式.如bitset 5 b0 則 b0 為 00000 bitsetb unsigned long u b有n位,並用u賦值 如果u超過n位,則頂端被截除 如 bitset 5...

bitset 用法整理

建構函式 bitsetb b有n位,每位都為0.引數n可以為乙個表示式.如bitset 5 b0 則 b0 為 00000 bitsetb unsigned long u b有n位,並用u賦值 如果u超過n位,則頂端被截除 如 bitset 5 b0 5 則 b0 為 00101 bitsetb s...