網路流 24 題 魔術球

2021-08-07 21:28:23 字數 912 閱讀 1506

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

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

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

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

輸入格式

檔案第 1 1 1 行有 1 1 1 個正整數 n n n,表示柱子數。

輸出格式

第一行是球數。接下來的 n n n 行,每行是一根柱子上的球的編號。

樣例樣例輸入

4樣例輸出

111 8

2 7 9

3 6 10

4 5 11

資料範圍與提示

1≤n≤55 1 \leq n \leq 55 1≤n≤55

分析:建立有向圖後,就是跑最小路徑覆蓋。

#include #include#include#include#include#includeconst int maxn = 20000;

const int mid = 10000;

typedef long long ll;

using namespace std;

int n,m;

vectorg[maxn+5];

int match[maxn+5];

bool used[maxn+5];

void addedge(int fr,int to)

bool dfs(int v)

printf("%d\n",ans);

for(int i=1;i<=ans;i++)

}int main()

return 0;

}

網路流 24 題 4 魔術球

題意 有n根柱子可以放球,球上的權值從1向後標。要求這n根柱子滿足 任意一根柱子上相鄰兩個球的和是乙個完全平方數 小的球在下面,大的球在上面 輸出最多放多少個球,和其中的一種方案。分析 第一想法是打表,是不是沒救了 然後首先就是考慮到了二分.然而範圍十分神奇.可以說是猜出來的。然後就是考慮把一些球連...

網路流24題 魔術球問題

列舉答案轉化為判定性問題,然後最小路徑覆蓋,可以轉化成二分圖最大匹配,從而用最大流解決。列舉答案a,在圖中建立節點1.a。如果對於i具體方法可以順序列舉a的值,當最小路徑覆蓋數剛好大於n時終止,a 1就是最優解。由於是順序放球,每根柱子上的球滿足這樣的特徵,即下面的球編號小於上面球的編號。抽象成圖論...

LOJ 網路流24題 魔術球

考慮如果i j i ji j為完全平方數,則i ii和j jj之間連一條邊,那麼最後構成乙個圖g gg,那麼問題即可轉化為尋找乙個最大的數字m mm,使得按照上述方法構成的圖的最小路徑覆蓋數小於等於n nn,我們二分m mm即可,構造方案同最小路徑覆蓋一題。include using namespa...