BZOJ 3774 最優選擇

2021-07-02 16:58:19 字數 1293 閱讀 4999

題意:小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將每個位編碼為半正弦波。這導致恆模數訊號 恆定...