BZOJ2039 employ人員僱傭

2021-08-04 16:26:03 字數 1641 閱讀 3381

time limit: 20 sec  

memory limit: 259 mb

submit: 1681  

solved: 817 [

submit][

status][

discuss]

作為乙個富有經營頭腦的富翁,小l決定從本國最優秀的經理中僱傭一些來經營自己的公司。這些經理相互之間合作有乙個貢獻指數,(我們用ei,j表示i經理對j經理的了解程度),即當經理i和經理j同時被僱傭時,經理i會對經理j做出貢獻,使得所賺得的利潤增加ei,j。當然,僱傭每乙個經理都需要花費一定的金錢ai,對於一些經理可能他做出的貢獻不值得他的花費,那麼作為乙個聰明的人,小l當然不會僱傭他。 然而,那些沒有被僱傭的人會被競爭對手所僱傭,這個時候那些人會對你僱傭的經理的工作造成影響,使得所賺得的利潤減少ei,j(注意:這裡的ei,j與上面的ei,j 是同乙個)。 作為乙個效率優先的人,小l想僱傭一些人使得淨利潤最大。你可以幫助小l解決這個問題嗎?

第一行有乙個整數n<=1000表示經理的個數 第二行有n個整數ai表示僱傭每個經理需要花費的金錢 接下來的n行中一行包含n個數,表示ei,j,即經理i對經理j的了解程度。(輸入滿足ei,j=ej,i)

第一行包含乙個整數,即所求出的最大值。

33 5 100

0 6 1

6 0 2

1 2 0

1【資料規模和約定】

20%的資料中n<=10

50%的資料中n<=100

100%的資料中 n<=1000, ei,j<=maxlongint, ai<=maxlongint

ø若兩個人都被僱傭,割掉的邊為2,4,權值分別為僱傭二人的代價。

ø若兩個人都不被僱傭,需要割掉1,3,權值均為兩人共同的收益。因為共同收益,兩人是兩份。

ø若兩人選擇不同,假設x被僱傭,y不被僱傭,需要割掉2,3,5。而此時還應減去乙份存在於1中的共同受益,再減去兩人選擇不同的減損。也就是要減去兩份共同收益,即為5的權值。

s->(權為e[i.j])點-》t(顧此人)

點與點間建2*(e[i,j])

#include

#include

#include

#include

#include

#include

#include

#include

#define v 1005

#define mod 1000000007

#define ll long long

using namespace std;

int n,m,s,t;

int a[v],s[v][v],g[v][v],pre[v],w[v],dep[v],q[v];

struct da

edge[v*v];

int head[v],tot;

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

bool bfs()

for(int i=1;i<=n;i++)

}add(0,i,w[i]);

add(i,0,w[i]);

//num+=w[i];

}printf("%d",num-solve());

return 0;

}int gg=haha();

int main()

bzoj2039 人員僱傭 最小割

這道題目描述真是醉了。題意,僱傭每乙個經理有乙個花費,同時僱傭兩個經理可以的到2 e i,j 的利潤,如果乙個經理僱傭另乙個經理不僱傭會造成e i,j 的損失 注意是倒扣 這種題目的做法和最大閉全子圖差不多是乙個道理。簡單說一下吧 其實是怕自己忘記 一般來說都是轉化成最小割,割完以後和s相連的是要選...

bzoj 3203 保護出題人

題意 在乙個詭異的植物大戰殭屍遊戲中,給出n關 第i關隊首殭屍距房門xi,兩個殭屍之間間隔為d 每次在隊首新增乙個血量為ai的殭屍,其他殭屍不變 每關在門前放乙個攻擊力任意的植物,求n關放置植物總攻擊力的最小值 n 100000,其他資料 10 12 題解 題意敘述略詭異。建議還是去看一眼原題 首先...

bzoj3609 HEOI2014 人人盡說江南好

題意 sol 博弈論 通過打表找規律,發現答案是 m迴圈的,且當m為偶數時取反 因為我太蒟蒻了qaq,給不出證明 我是這麼想的 首先對於一組n,m,假如兩個人都往一堆上放,滿了以後再放下一堆,設贏的人為甲,輸的人為乙 那麼甲一定會盡力維持這個局面,乙則會去破壞該局面,即乙會額外新開一堆 那麼甲會每次...