日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

hrbust/哈理工oj 1809 再就业【状压dp】

發布時間:2023/12/10 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hrbust/哈理工oj 1809 再就业【状压dp】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

再就業
Time Limit: 1000 MSMemory Limit: 32768 K
Total Submit: 50(24 users)Total Accepted: 27(21 users)Rating:?Special Judge:?No
Description

? ? 修水管沒修好,小胖子又失業了,于是又找了一份在婚姻介紹所的工作,現在老板又給小胖子出難題了,如果小胖子能解決,就可以重新再就業了。

? ? 這里有n對男女士,任意一個男生對一個女生都有一個好感值,任意一個女生也對一個男生有好感值,給出一個好感值表,為了方便,用n*n的矩陣表示,(i,j)表示第i行表示男士(或女士)對第j列的女士(或男士)的好感度,問怎么安排n對相親才能使成功率最大,并且不存在搞基等事件發生。

????

? ? 小胖子感慨,沒文化真可怕,工作都沒了。

Input

第一行輸入一個整數t,代表測試次數,t不超過100。

對于每組數據的第一行輸入一個整數n,代表有多少對男女生,n大于0不超過16。

接下來是一個n*n的矩陣,每個數字分別表示i和j之間的好感度,好感度不超過10000。

Output
輸出最大相親的好感和。
Sample Input

2

2

1 5

2 1

3

1 2 3

6 5 4

8 1 2

Sample Output

7?
16

Author
sunshine@hrbust

狀壓dp都是300+ms過的,看到幾位大神在理工oj上邊用KM算法秒到2ms,簡直不是人......................圖論渣表示還是去老老實實的用狀壓dp來搞定這個問題。

思路:
我們設dp【i】【j】表示第i行j狀態的最大好感值的和。

對于狀態j。假設j的值為5:,對應二進制的值為101,表示選取了第0行和第2行上邊的女孩。

辣么不難推出:

dp【i+1】【q((1<<k)+j)】=max(dp【i+1】【q((1<<k)+j)】,dp【i】【j】+a【i+1】【k】);


我們初始化dp矩陣為-1,然后初始化第0行dp【0】【1<<j】=a【0】【j】,然后向下一行開始dp,枚舉第0行的j狀態,如果當前這種狀態有值(不為-1)的話,我們再枚舉一下k,如果(j&(1<<k)!=0)【與運算同1為1,其他為0,可以方便用來判斷當前狀態里邊是否已經選取了第k列的女孩】辣么說明j狀態里邊沒有選取第k列的女孩。辣么就能符合狀態轉移方程。


AC代碼:

#include<stdio.h> #include<string.h> #include<iostream> using namespace std; int a[17][17]; int dp[17][1<<17]; int main() {int t;scanf("%d",&t);while(t--){int n;scanf("%d",&n);for(int i=0;i<n;i++){for(int j=0;j<n;j++){scanf("%d",&a[i][j]);}}//printf("yes\n");int end=1<<n;memset(dp,-1,sizeof(dp));for(int j=0;j<n;j++){dp[0][1<<j]=a[0][j];}for(int i=0;i<n-1;i++){for(int j=0;j<end;j++){if(dp[i][j]==-1)continue;else{for(int k=0;k<n;k++){int tmp=1<<k;if(j&tmp)continue;dp[i+1][j+tmp]=max(dp[i+1][j+tmp],dp[i][j]+a[i+1][k]);}}}}int output=0;for(int i=0;i<end;i++){if(dp[n-1][i]>output)output=dp[n-1][i];}printf("%d\n",output);} }










總結

以上是生活随笔為你收集整理的hrbust/哈理工oj 1809 再就业【状压dp】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。