P2765 魔術球問題

2022-09-20 22:48:16 字數 939 閱讀 2240

每個數可以放在和它和是平方的數上面

我們可以想到,如果乙個點可以放在某個點上面是那個點向它連邊

如果乙個點向它所有能連的點連邊,那麼它的最小鏈覆蓋就是我們要找的答案

經過簡單推理可以發現,每個點可以連線的點的大小是遞增的,那麼把編號小的點放在柱子下面一定更優

這樣連邊就行了

#include#include#include#include#include#include#includeusing namespace std;

#define rg register

inline int read()

int n;

const int n=5005,m=12005<<2;

int head[n],ver[m],nxt[m],flow[m],tot=1;

int dis[n],cur[n];

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

inline void adds(int x,int y,int z)

int s,t;

inline int bfs()

} }return dis[t];

}int dfs(int x,int f)

} }if(!used) dis[x]=0;

return used;

}inline int dinic()

int vis[n];

int base=2500;

void work(int x)

}signed main()

now+=dinic();

//cout

printf("%d\n",i-1);

for(int j=1;jbreak;

} return 0;

}

P2765 魔術球問題

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

P2765 魔術球問題

p2765 魔術球問題 貪心模擬就可以過.好像和dinic沒啥關係 找找規律發現可以貪心放。n又灰常小。設答案 m 你可以 o mn 直接模擬過去 閒的慌得話可以像我用個 set 維護 複雜度可以降為 o mlogn 網路流.不會寫 逃 口胡一下dinic 乙個點 u 拆成2個表示 1.放在柱子最下...

洛谷P2765 魔術球問題

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