happiness 國家集訓隊2011 吳確

2022-02-03 10:35:57 字數 2279 閱讀 6827

2011中國國家集訓隊命題答辯

高一一班的座位表是個n*m的矩陣,經過乙個學期的相處,每個同學和前後左右相鄰的同學互相成為了好朋友。這學期要分文理科了,每個同學對於選擇文科與理科有著自己的喜悅值,而一對好朋友如果能同時選文科或者理科,那麼他們又將收穫一些喜悅值。作為計算機競賽教練的scp大老闆,想知道如何分配可以使得全班的喜悅值總和最大。

第一行兩個正整數n,m。

接下來是六個矩陣

第乙個矩陣為n行m列 此矩陣的第i行第j列的數字表示座位在第i行第j列的同學選擇文科獲得的喜悅值。

第二個矩陣為n行m列 此矩陣的第i行第j列的數字表示座位在第i行第j列的同學選擇理科獲得的喜悅值。

第三個矩陣為n-1行m列 此矩陣的第i行第j列的數字表示座位在第i行第j列的同學與第i+1行第j列的同學同時選擇文科獲得的額外喜悅值。

第四個矩陣為n-1行m列 此矩陣的第i行第j列的數字表示座位在第i行第j列的同學與第i+1行第j列的同學同時選擇理科獲得的額外喜悅值。

第五個矩陣為n行m-1列 此矩陣的第i行第j列的數字表示座位在第i行第j列的同學與第i行第j+1列的同學同時選擇文科獲得的額外喜悅值。

第六個矩陣為n行m-1列 此矩陣的第i行第j列的數字表示座位在第i行第j列的同學與第i行第j+1列的同學同時選擇理科獲得的額外喜悅值。

輸出乙個整數,表示喜悅值總和的最大值

1 21 1

100 110

11000

1210

兩人都選理,則獲得100+110+1000的喜悅值。

對於10%以內的資料,n,m<=4

對於30%以內的資料,n,m<=8

對於100%以內的資料,n,m<=100 資料保證答案在2^30以內

對於100%的資料,時間限制為0.5s。

【題解】

這道題的難點在於確定邊權。最小割問題,割去的就是我們失去的部分;兩點之間有關係,總是通過建邊來實現的。對於這道題來說,每種情況我們都失去了什麼?以源點代表文科,匯點代表理科。都選一科(三角環),失去了共同選另一科和分別選另一科的喜悅值。分別選兩科(二字形),失去了兩個共同喜悅值和兩個單獨選另一科的喜悅值。(可以證明可能出現的情況只有這兩種,否則都不會是最小割)相同位置的邊權構成一定相同,因此用數學方法推出每個人到源點或匯點的邊權為個人喜悅值+1/2共同喜悅值,兩點之間邊權為1/2都選文+1/2都選理。注意共同邊要雙向建邊,因為兩點之間是完全等效的;每個人向源點和匯點的邊應該在邊權全部處理完之後再統一新增。

可以發現邊權會出現實型,結果卻一定是整型。對於這種情況,可以把邊權全部*2,最後結果再/2來避免double的麻煩。dfs函式中有乙個語句:if(!f) break;原先從來沒打過,這道題不加這個卻會超時,加了之後直接上榜,確實是乙個非常有理有據的優化。

#include#include

#include

#include

using

namespace

std;

const

int sj=105

;int n,m,sx[sj][sj],e,h[sj*sj],s,t,dep[sj*sj];

intw[sj][sj],l[sj][sj],g[sj][sj],z[sj][sj],a1,ans;

struct

bb[sj*sj*10

];queue

q;void add(int x,int y,int

z)void

init()

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

for(int j=1;j<=m;j++)

for(int i=1;i)

for(int j=1;j<=m;j++)

for(int i=1;i)

for(int j=1;j<=m;j++)

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

for(int j=1;j)

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

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

for(int j=1;j)

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

ans*=2;}

bool bfs(int

x) }

return0;

}int bj(int x,int

y)int dfs(int x,int

f)

if(!ans) dep[x]=-1

;

return

ans;

}int

main()

國家集訓隊 旅遊

題目背景 ray 樂忠於旅遊,這次他來到了 t 城。t 城是乙個水上城市,一共有 nn 個景點,有些景點之間會用一座橋連線。為了方便遊客到達每個景點但又為了節約成本,t 城的任意兩個景點之間有且只有一條路徑。換句話說,t 城中只有 n 1n 1 座橋。ray 發現,有些橋上可以看到美麗的景色,讓人心...

國家集訓隊 Tree I

題目 給你乙個無向帶權連通圖,每條邊是黑色或白色。讓你求一棵最小權的恰好有nee dneed need 條白色邊的生成樹。題目保證有解。思路 凸優化裸題,要注意的就是,優先選白色 優先選黑色也行 主要是同一斜率可能會切到很多點,那麼就要有乙個標準,要麼選最小點,要麼選最大。另外求出來的點不一定是ne...

國家集訓隊 旅遊

ray 樂忠於旅遊,這次他來到了 t 城。t 城是乙個水上城市,一共有 n 個景點,有些景點之間會用一座橋連線。為了方便遊客到達每個景點但又為了節約成本,t 城的任意兩個景點之間有且只有一條路徑。換句話說,t 城中只有 n 1 座橋。ray 發現,有些橋上可以看到美麗的景色,讓人心情愉悅,但有些橋狹...