1739:魔術球問題
time limit:1000ms memory limit:65536k
total submit:
39accepted:
20 page
view:230
special judged
[submit] [status]
[discuss]
font size: aa
aa aa
假設有n根柱子,現要按下述規則在這n根柱子中依次放入編號為1,2,3,...的球。(1)每次只能在某根柱子的最上面放球。
(2)在同一根柱子中,任何2個相鄰球的編號之和為完全平方數。
試設計乙個演算法,計算出在n根柱子上最多能放多少個球。例如,在4 根柱子上最多可
放11 個球。
程式設計任務:
對於給定的n,計算在n根柱子上最多能放多少個球。
由檔案input.txt提供輸入資料。檔案第1 行有1個正整數n(n<=55),表示柱子數。
程式執行結束時,將n 根柱子上最多能放的球數以及相應的放置方案輸出到檔案output.txt中。檔案的第一行是球數。接下來的n行,每行是一根柱子上的球的編號。
4
111 82 7 9
3 6 10
4 5 11
【問題分析】
列舉答案轉化為判定性問題,然後最小路徑覆蓋,可以轉化成二分圖最大匹配,從而用最大流解決。
【建模方法】
列舉答案a,在圖中建立節點1..a。如果對於i
具體方法可以順序列舉a的值,當最小路徑覆蓋數剛好大於n時終止,a-1就是最優解。
【建模分析】
由於是順序放球,每根柱子上的球滿足這樣的特徵,即下面的球編號小於上面球的編號。抽象成圖論,把每個球看作乙個頂點,就是編號較小的頂點向編號較大的頂點連線邊,條件是兩個球可以相鄰,即編號之和為完全平方數。每根柱子看做一條路徑,n根柱子要覆蓋掉所有點,乙個解就是乙個路徑覆蓋。
最小路徑覆蓋數隨球的數量遞增不遞減,滿足單調性,所以可以列舉答案(或二分答案),對於特定的答案求出最小路徑覆蓋數,乙個可行解就是最小路徑覆蓋數等於n的答案,求出最大的可行解就是最優解。本問題更適合列舉答案而不是二分答案,因為如果順序列舉答案,每次只需要在殘量網路上增加新的節點和邊,再增廣一次即可。如果二分答案,就需要每次重新建圖,大大增加了時間複雜度。
**:
#include #include #include #include #define maxn 100000#define eps 0.000000001
#define inf 1 << 30
using namespace std;
struct e
edge[200000];
int tot, s, t, n, ans, k;
int head[maxn], d[maxn], dist[maxn], vis[maxn];
void add_edge(int u, int v, int f)
int dfs(int x, int low)
return b;
}
int bfs()
}return 0;
}
void dinic()
int check(int m, int n)
void print(int u, int clr)
}if (!flag) print(v/2, clr);
}
int main()
n--;
printf("%d\n", n);
memset(vis, 0xff, sizeof(vis));
int clr = 0;
for (int j = 1; j <= n; j++) if (vis[j] == -1) print(j, clr++);
for (int k = 0; k < clr; k++)
printf("\n");
}return 0;
}
線性規劃與網路流24題 4 魔術球
線性規劃與網路流24題 4 魔術球 description 假設有n根柱子,現要按下述規則在這n根柱子中依次放入編號為 1,2,3,的球。1 每次只能在某根柱子的最上面放球。2 在同一根柱子中,任何2個相鄰球的編號之和為完全平方數。試設計乙個演算法,計算出在n根柱子上最多能放多少個球。例如,在4 根...
線性規劃與網路流24 魔術球問題
題目點這裡 最小路徑覆蓋問題 這道題,一開始我花了100多ms,看了下排行榜,發現個10多ms的。看了很久他的 才明白怎麼回事。同時更加加深了我對匈牙利演算法的理解。我從他的 中學到的是 1 若多加幾條邊,並不需要重新跑一邊匈牙利,只需要從沒匹配的點開始dfs就可以了,2 若因為多加了乙個點,從而多...
線性規劃與網路流24題 17 運輸問題
description w公司有m個倉庫和n 個零售商店。第i 個倉庫有ai個單位的貨物 第j個零售商店需要bj個單位的貨物。貨物供需平衡,即sigma ai sigma bj 從第i個倉庫運送每單位貨物到第j個零售商店的費用為cij。試設計乙個將倉庫中所有貨物運送到零售商店的運輸方案,使總運輸費用...