NEFU 486 魔術球問題 最小路徑覆蓋

2021-06-23 04:58:22 字數 1488 閱讀 2369

題目鏈結 魔術球問題

假設有n根柱子,現要按下述規則在這n根柱子中依次放入編號為1,2,3,...的球。

(1)每次只能在某根柱子的最上面放球。

(2)在同一根柱子中,任何2個相鄰球的編號之和為完全平方數。

試設計乙個演算法,計算出在n根柱子上最多能放多少個球。例如,在4 根柱子上最多可放11 個球。

對於給定的n,計算在n根柱子上最多能放多少個球。

多組資料輸入.

每組輸入1個正整數n,表示柱子數。

每組輸出n 根柱子上最多能放的球數。

4

11

線性規劃與網路流24題

[submit][

back][

discuss]

 最小路徑覆蓋=頂點數-最大匹配數。。

在殘留網路上增加新的節點和邊,然後再增廣一次即可

#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;

#define pb push_back

#define mp make_pair

#define clr(vis) memset(vis,0,sizeof(vis))

#define mst(vis,pos) memset(vis,pos,sizeof(vis))

#define max3(a,b,c) max(a,max(b,c))

#define max4(a,b,c,d) max(max(a,b),max(c,d))

#define min3(a,b,c) min(a,min(b,c))

#define min4(a,b,c,d) min(min(a,b),min(c,d))

#define pi acos(-1.0)

#define inf 0x7fffffff

#define linf 1000000000000000000ll

#define eps 1e-8

typedef long long ll;

typedef unsigned long long ull;

const int mm=111111;

const int mn=10000;

struct dinic

}return 0;

}int dinic_flow()

{int res,i;

while(dinic_bfs())

{for(i=0;i

魔術球問題

列舉放的球,先假設新建柱子,拆成兩個點,第乙個點連s,表示後面還可以放 第二個連t表示放到其他柱子上 再列舉放過的數和它是否組成完全平方數,列舉的數的第乙個點向它的第二個點連邊,表示這個球可以放到其他球上,容量都為一 每次跑最大流出來的表示會消掉的柱子個數,如果此時球 消去的比n大則break輸出答...

魔術球問題

題目描述 題解 個人認為網路流二十三題中比較有意思的一道。先列舉球數。每加乙個球,從 s 向 xi 連一條容量為 1 的邊,從 yi 向 t 連一條容量為 1 的邊。然後從 xi 向滿足 i j 為完全平方數的 yj 連容量為 1 的邊。在殘餘網路上跑 ek 或 dinic 如果得到的最大流為 0 ...

魔術球問題

曾經在模擬賽的時候做過弱化版,不需要輸出方案。其實加強版因為資料範圍很小,模擬做也未嘗不可,暴力算出n 55時最終答案也只有1567,拿二維陣列存一下方案即可。當然,這個題是由網路流做法的,雖然我的網路流做法只是模擬了乙個貪心的過程。貪心的正確性證明就請移步我的弱化版題解好啦 對於乙個球,有兩種放法...