每個數可以放在和它和是平方的數上面
我們可以想到,如果乙個點可以放在某個點上面是那個點向它連邊
如果乙個點向它所有能連的點連邊,那麼它的最小鏈覆蓋就是我們要找的答案
經過簡單推理可以發現,每個點可以連線的點的大小是遞增的,那麼把編號小的點放在柱子下面一定更優
這樣連邊就行了
#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...