AcWing 323 戰略遊戲

2022-09-11 18:54:15 字數 672 閱讀 6589

題目傳送門

這是基礎課原題 acwing 285. 沒有上司的舞會

#include using namespace std;

const int n = 1510; //因為題目明確是有向圖,無需m=n*2

int h[n], e[n], ne[n], idx; //鄰接表

int f[n][2];

/** 集合: 以結點i為 根節點 的子樹,在 i 上放置哨兵(1) 和不放哨兵(0) 的方案

狀態表示: 方案中,放置的哨兵數量 最少

狀態計算:

*/bool st[n]; //用於判斷是不是根節點

//鄰接表模板

void add(int a, int b)

void dfs(int u)

}int main()

}//有向圖,需要找到出根

int root = 0;

while (st[root]) root++;

//從根開始

dfs(root);

//輸出 兩個結果取個 min

printf("%d\n", min(f[root][0], f[root][1]));

}return 0;

}

藍書 323 戰略遊戲

f i 2 以i為根的子樹,i節點不放置士兵滿足條件的最小放置士兵數量。樹形dp一下就行 比較奇怪的是 讀入scanf d d u,m 是對的 scanf d s u,s int m s 2 0 這樣就會超時。有懂得大佬解答下嗎。include using namespace std typedef...

TYVJ3097 3121 3369 戰略遊戲

給一棵n個節點的樹,在點上放置士兵,每個士兵能監視周圍的所有邊,詢問最少放置的士兵數dp i,0 表示在 i點不放 士兵合法 的最小放 置數dp i,1 表示在 i點放士 兵合法的 最小放置 數 dp i,0 d p so n i 1 dp i 1 dp son i 1 d p so n i 0 m...

P2016 戰略遊戲

樹形dp f u 0 表示 uf u 0 表示u f u 0 表示u 號節點不放士兵,以x為根的子樹需要的最少士兵數。f u 1 表示 uf u 1 表示u f u 1 表示u 號節點放士兵,以x為根的子樹需要的最少士兵數。由於我們定義的是將其完全覆蓋,則我們不需要考慮父親節點,為什麼?當我們已經回...