這個是校賽的時候的一道題目,過了那麼久了才做出來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幅畫被完成時的時間。
25 1123
454 22 5
3 15 3
10 1
1 3 6 10 157 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...