魔術球 網路流

2021-09-01 12:39:33 字數 658 閱讀 6140

傳送門

將和為平方數的兩個數連邊 , 從小到大列舉數 , 每次插入乙個數就新加邊

加了過後跑一遍網路流 , 如果發現流為0 , 那麼這個數只能新作為乙個開頭

否則 , 我們就可以將它排在後面 , 然後個數 -= 最大流[想一想]

我們發現個數大於n時 , 列舉到的now-1就是答案

#include#define n 5005

#define m 500050

#define inf 0x3fffffff

using namespace std;

int first[m],next[m],to[m],w[m],tot=1,cnt;

int dis[m],n,st,ed,is[n*n],vis[m],ans[m];

void add(int x,int y,int z)

bool bfs()

} }return false;

}int dfs(int u,int flow)

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

return ans;

} void printf(int u)

}int dinic()return ans;

}int main()

}}

網路流 魔術球問題

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

網路流 24 題 魔術球

假設有 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 根柱子上最多...

網路流 24 題 4 魔術球

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