藝術聯合社(dp)

2021-06-22 13:35:40 字數 1171 閱讀 3345

這個是校賽的時候的一道題目,過了那麼久了才做出來orz...

time limit: 1000ms   memory limit: 65536k  有疑問?點這裡^_^

藝術聯合會顧名思義就是n個畫家用n種顏色一起進行藝術創作(作畫)。每一位畫家僅使用一種顏色,並且規定n位畫家使用的顏色是不同的,這裡我們可以假設第一位畫家使用的顏色編號為1,第2位畫家使用的顏色編號為2以此類推。每一幅畫上面都有n種顏色。我們假設把第j種顏色塗在第i幅畫上需要消耗第j個畫家的時間為 t[i][j]。

我們知道在任何情況下,規則都是至關重要的,因此畫家們將根據以下規則進行作畫:

1. 每一幅畫都是由第乙個畫家先畫,然後是第二個畫家,然後是第三個畫家……,也就是說,在第j個畫家畫完之後,一定是第(j + 1) 個畫家進行作畫 (如果有(j + 1)<= n)

2. 每乙個畫家在作畫上按照這樣的順序進行作畫:首先在第一幅畫上作畫,然後是第二幅畫,依次類推直到第n幅畫。

3. 不同的畫家在不同的畫幅上是可以同時工作的,比如說第二位畫家在作第一幅畫時,第一位畫家可以作第二幅畫。任何乙個畫家是不需要時間休息的。

4. 當第j個畫家作完自己部分的畫時,此幅畫就立即可以被第(j + 1) 個畫家使用。

假設第一位畫家開始作畫的時間是0,輸出每一幅畫被完成時的時間。

第一行輸入乙個數t,表示有t組資料(1<=t<=100)。

每組資料第一行是兩個整數:m 和 n(1 <= m <= 50000,1 <= n <= 5)m代表的是畫幅的個數,n代表的是畫家的個數。接下來每行有n個整數t[i][1],t[i][2]……t[i][n](1 <= t[i][j] <= 1000),t[i][j] 表示第j個畫家把第j種顏色塗在第i幅畫上需要的時間。

每組資料輸出一行含有m個數 r1,r2,……rm,這裡ri表示第i幅畫被完成時的時間。

2

5 1123

454 22 5

3 15 3

10 1

1 3 6 10 15

7 8 13 21

#include int t[50010][5];

int dp[50010][5]; //dp[i][j]代表第j個畫家完成第i副畫時的時間

int main()

return 0;

}

dp種樹的藝術

題目描述 有n棵高度不一樣的樹要種成一行,為了讓種樹更加有藝術性,制定乙個種樹規則,希望從左邊看過去只能看到l棵樹,從右邊看過去只能看到r棵樹,請問有多少種不同的種樹方案。輸入格式 輸入包含多組資料。首先第一行包含乙個整數t,表示資料的組數。之後t行,每行包含三個數n,l,r,以空格隔開,表示樹的棵...

樹形DP 聯合權值

題目描述 無向連通圖g 有n 個點,n 1 條邊。點從1 到n 依次編號,編號為 i 的點的權值為w i 每條邊的長度均為1 圖上兩點 u v 的距離定義為u 點到v 點的最短距離。對於圖g 上的點對 u,v 若它們的距離為2 則它們之間會產生wu wv 的聯合權值。請問圖g 上所有可產生聯合權值的...

hdu4734 數字dp(減去的藝術)

題目大意 求區間 l,r 內滿足數x的f x f a 的數的個數。對於乙個n位的數 anan 1an 2.a1 f x an 2 n 1 an 1 2 n 2 a1 1.題解 首先我們肯定要維護乙個狀態sum表示列舉到pos位數的前面的數字的f x 值,最後判斷一下是否大於f a 就行了。因為f x...