座位調整
題目描述:
調整的方法如下:
1 . 首先將辦公區按照各種零食的擺放分成 n 個不同的區域。(例如:可樂區,餅乾區,牛奶區等等)。
2 . 每個員工對不同的零食區域有不同的喜好程度(喜好程度度的範圍為 1 — 100 的整數, 喜好程度越大表示該員工越希望被調整到相應的零食區域)。
3 . 由於每個零食區域可以容納的員工數量有限,人力資源部希望找到乙個最優的調整方案令到總的喜好程度最大。
資料輸入:
第一行包含兩個整數 n , m ,( 1<=n , m<=300 )。分別表示 n 個區域和 m 個員工。
第二行是 n 個整數構成的數列 a ,其中 a[i] 表示第 i 個區域可以容納的員工數, (1<=a[i]<=m , a[1]+a[2]+..+a[n]=m) 。
緊接著是乙個 m*n 的矩陣 p , p ( i , j )表示第 i 個員工對第 j 個區域的喜好度。
答案輸出:
對於每個測試資料,輸出可以達到的最大的喜好程度。
輸入樣例
3 3
1 1 1
100 50 25
100 50 25
100 50 25
輸出樣例
175
資料解釋:此資料只存在一種安排方法,三個員工分別安置在三個區域。最終的喜好程度為 100+50+25=175
看到上題後,第一反映是用動態規劃。但是沒有想到非常好的遞迴表示式。目前想到的動態規劃的時間複雜度是m!。感覺一定有更有的方案。想到後再給大家寫出來。
目前想到的方法是做員工的全排列,然後根據排列的元素,按順序放到區域中。然後找出最大的興趣值。
int matrix[3][3] = ;
int a = ;
int personmax[3];
int m = 3;
int n = 3;
void swap(int*a, int*b)
int generateinterestingvalue()
for(int i =0; i< m; ++i)
}cntmax += matrix[source[k]][cntarea];
++position;
}if(cntmax > maxinteresting)
cntmax = 0;
position = 0;
cntarea = 0;
swap(&source[j],&source[i]);
}} delete source;
return maxinteresting;
}
2023年百度之星程式設計大賽 初賽 1
b problem description 小度熊拿到了乙個無序的陣列,對於這個陣列,小度熊想知道是否能找到乙個k 的區間,裡面的 k 個數字排完序後是連續的。現在小度熊增加題目難度,他不想知道是否有這樣的 k 的區間,而是想知道有幾個這樣的 k 的區間。input 輸入包含一組測試資料。第一行包含...
2023年百度之星程式設計大賽初賽B
圓環 時間限制 1000ms 描述乙個圓環上有n個位置,這n個位置按順時針依次標號為1,2,n。初始時圓環的每個位置上都有乙個1至n之間的整數,且每個整數只出現一次。任何時刻,你可以將圓環上的數全部逆時針旋轉乙個位置,即第i個位置上的數變為原來第i 1個位置上的數,第n個位置上的數變為原來第1個位置...
2020 年百度之星 程式設計大賽 初賽二
problem description 科學家小沃沃在研究病毒傳播的規律,從而控制疫情。有 n 個人,編號分別為 1,2,n。我們用螢光粉代替病毒,編號為 1 的人,在第 0 時刻塗上了螢光粉,剩下的人在第 0 時刻沒有塗。對於第 i 個人,我們知道這個人在哪些時刻出現在了哪些地方。如果時刻 t,某...