cogs 魔術球問題 簡化版

2021-07-30 08:59:14 字數 1406 閱讀 6099

[網路流24題]魔術球問題(簡化版

★★☆ 輸入檔案:balla.in 輸出檔案:balla.out 簡單對比

時間限制:1 s 記憶體限制:128 mb

問題描述:

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

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

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

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

放11個球。

´程式設計任務:

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

´資料輸入:

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

´結果輸出:

檔案的第一行是球數。

資料規模

n<=60 保證答案小於1600

輸入檔案示例

4 輸出檔案示例

11 方案如下

1 8

2 7 9

3 6 10

4 5 11

每一行表示乙個柱子上的球

【分析】

重要定理:最小路徑覆蓋=節點數-最大匹配

…於是拆點為二分圖…blabla…

這破題想了老長時間orz

【**】

//cogs 魔術球問題(簡化版) 

#include

#include

#include

#include

#include

#define inf 1e9+7

#define p(i,j) (i-1)*n+j

#define fo(i,j,k) for(i=j;i<=k;i++)

using

namespace

std;

queue

q;const

int mxn=20005;

int n,m,cnt,ans,s,t,tot;

int head[mxn],dis[mxn],a[mxn];

int dx[8]=,dy[8]=;

struct node f[mxn<<2];

inline

void add(int u,int v,int flow)

inline

bool bfs()

}if(dis[t]>0) return

1; return0;}

inline

int find(int u,int low)

}if(!sum) dis[u]=-1;

return sum;

}int main()

}return

0;}

網路流24題 魔術球問題(簡化版

問題描述 假設有n根柱子,現要按下述規則在這n根柱子中依次放入編號為 1,2,3,4.的球。1 每次只能在某根柱子的最上面放球。2 在同一根柱子中,任何2個相鄰球的編號之和為完全平方數。試設計乙個演算法,計算出在n根柱子上最多能放多少個球。例如,在4 根柱子上最多可 放11個球。程式設計任務 對於給...

網路流24題 魔術球問題(簡化版

輸入檔案 balla.in輸出檔案 balla.out簡單對比 時間限制 1 s 記憶體限制 128 mb 問題描述 假設有n根柱子,現要按下述規則在這n根柱子中依次放入編號為 1,2,3,4.的球。1 每次只能在某根柱子的最上面放球。2 在同一根柱子中,任何2個相鄰球的編號之和為完全平方數。試設計...

報表製作簡化版

機房收費系統無論是重構還是第一版,都用到了報表,為什麼在乙個系統中要新增報表呢?報表的作用是什麼呢?報表百科。我理解的報表是 向上級報告情況的乙個媒介,沒有固定的格式。之前在專案中,我們真正給企業做過一次報表,是以匯出word的形式生成的,大概格式如圖 這次在自己的 機房收費系統 中設計報表,我使用...