假設有 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...