題意:小n手上有乙個n*m的方格圖,控制某乙個點要付出aij的代價,然後某個點如果被控制了,或者他周圍的所有點(上下左右)都被控制了,那麼他就算是被選擇了的。乙個點如果被選擇了,那麼可以得到bij的回報,現在請你幫小n選乙個最優的方案,使得回報-代價盡可能大。
一眼是最小割,然後建邊的時候就糊塗了…首先多建乙個點表示四周的點是否被選擇,然後由它向四周以及自己連inf的邊,表示兩者只能取1的關係,之後是重要的一步,將節點黑白染色,不同顏色的點反過來連就可以了,借用popoqqq大神的圖
tips:最小割大概有兩個技巧,列方程解邊權,用染色的方法解決相鄰節點的關係。
#include
#include
#include
#include
#include
#include
using
namespace
std;
const
int maxn=10000+10;
const
int inf=1000000000;
struct edge
;vector
edges;
vector
g[maxn];
int cur[maxn],dis[maxn],vis[maxn],n,m,s,t,ans;
int dx=;
int dy=;
int id(int x,int y)
int id2(int x,int y)
void addedge(int from,int to,int cap)
); edges.push_back((edge));
int m1=edges.size();
g[from].push_back(m1-2);
g[to].push_back(m1-1);
}bool bfs()
}} return vis[t];
}int dfs(int x,int a)
} return flow;
}int maxflow()
return flow;
}int main()
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
}else}}
printf("%d\n",ans-maxflow());
return
0;}
BZOJ 3774 最優選擇 最小割
驚了我竟然排rank 2,鹹魚有朝一日也能翻身。1a 先留個坑 include include include using namespace std const int n 5005,m n 10,inf 0x3f3f3f3f namespace graph bool bfs return lev...
BZOJ 3774 最優選擇 最小割
此題與 文理分科 那道題目有些類似。都是使用最小割來求解,先加上可能獲得的權值,在減掉必須捨棄的權值 最小割 文理分科是規定每個人和 s 連就是選文,和 t 連就是選理。然後如果乙個人和相鄰的人都全文就會獲得乙個權值,那麼我們就為這個權值建乙個點,讓這個點與必須同時選文的5個人連 inf 邊。這樣只...
最優選擇最小頻移鍵控(MSK)
最小頻移鍵控 msk 在數字調製中,最小頻移鍵控 msk 是一種在20世紀50年代末和60年代開發的連續相位頻移鍵控。與oqpsk類似,msk使用在正交分量之間交替的位元進行編碼,其中q分量延遲了符號週期的一半。然而,代替oqpsk使用的方波脈衝,msk將每個位編碼為半正弦波。這導致恆模數訊號 恆定...