【2012百度之星/初赛上】D:轮子上的度度熊
描述:百度樓下有一塊很大很大的廣場。廣場上有很多輪滑愛好者,每天輪滑愛好者們都會在廣場上做一種叫做平地花式輪滑的表演。度度熊也想像他們一樣在輪上飛舞,所以也天天和他們練習。
因為度度熊的天賦,一下就學會了好多動作。但他覺得只是單獨的做動作很沒意思,動作的組合才更有欣賞性。
平地花式輪滑(簡稱平花),是穿輪滑鞋在固定數量的標準樁距間做無跳起動作的各式連續滑行。度度熊表演的舞臺上總共有N個樁,而他也從自己會的動作中挑出M最好看的。
但事情并沒有這么簡單。首先每個動作因為復雜度不同,所以經過的樁的個數也不盡相同。
然后,為了保持連貫性,有些動作是接不起來的,所以每個動作都有他前面能接的一個動作的列表。更有甚者,有的動作要考慮前兩個動作才能確定是否能做出來。因此動作被分為三類:0型動作,無論前面是什么動作都能做出來,所以這種動作也能作為起始動作;1型動作,要考慮前面那個動作才能確定是否能接上;2型動作,要考慮前面兩個動作才能確定是否能接上。
最后,評分也很復雜。每個動作有個單獨得分,只要在表演過程中做了這個動作就能獲得這個分數。有些動作的組合也非常好看,也會有相應的得分。不過要獲得某個組合的得分就要在過程中完成這組組合中所有的動作,但是,這些動作既不要求按順序完成也不要求連續完成。當然,大家不喜歡重復的動作,所以同一個動作和同一個組合不會獲得兩次得分。
舉個例子,總共有10個樁,有以下幾個動作:
動作1:0型,需要3個樁,得分5。
動作2:0型,需要4個樁,得分4。
動作3:1型,能接在動作1或者動作2后面,需要6個樁,得分10。
動作4:2型,要接在動作2+動作1后面,需要4個樁,得分30。
組合1:(動作1,動作2,動作4),得分15。
組合2:(動作1,動作3),得分10。
組合3:(動作2,動作3),得分5。
能配成的方案不少,但有這么幾種方案是不行的:
1、動作2+動作1+動作4,雖然,動作4分數很多,而且1,2,4的組合還能額外獲得15分。但是,這個方案總共要用4+3+4=11個樁,超過了總樁數,所以不行。
2、動作1+動作3,同樣也完成了一個組合,也滿足各個動作要求的限定條件。但是做完后,只過了9個樁,沒有完成整個表演。這樣度度熊會很尷尬的。所以這樣的方案也不行。
最優方案應該是動作2+動作3,滿足樁數要求,也滿足各個動作前置限定條件。最后得分:單項動作14分+組合加分5分=19分。
雖然,度度熊一下就算出來自己應該怎么表演了。但是他還是想考考精通編程的你。
輸入
一開始一個整數T(1 <= T <= 5),表示有T組數據,每個數據如下格式:
第一行有三個整數,N,M,P。分別表示樁數、動作數和組合數。
第二行M個0~2的整數,表示每個動作的類型。
第三行M個整數,表示每個動作需要使用的樁數。
第四行M個整數,表示每個動作單項的分數。
接下來P(P<=1024)行,每行描述一個組合。每行的前兩個數X,Y,X表示組合中總共有X個動作,Y表示組合能獲得的分數。后面接X個數,表示組合中包含的X個動作的編號。
再接下來分為M塊,第i塊描述第i個動作的前置條件。
若第i個動作是0型的,那么它沒有前置條件。所以對應的塊是一個空行。
若第i個動作是1型的,對應的塊是一個M的01序列。若這個序列是Aj的話,Aj=1表示動作i可以接在動作j后面。
若第i個動作是2型的,對應的塊是一個MxM的01矩陣。若這個序列是Aj,k的話,Aj,k=1表示動作i可以接在動作j+動作k后面。
輸出
對于每個數據,輸出包含一個整數,表示度度熊能獲得的最高分數。
樣例輸入
1
10 4 3
0 0 1 2
3 4 6 4
5 4 10 30
3 15 1 2 4
2 10 1 3
2 5 2 3
1 1 0 0
0 0 0 0
1 0 0 0
0 0 0 0
0 0 0 0
樣例輸出
19
提示
保證至少有一個方案滿足要求。
對于100%的數據,1≤N≤100,1≤M≤10,所有分數之和在32位有符號整數范圍之內。每個動作至少需要過1個樁。
代碼:總結
以上是生活随笔為你收集整理的【2012百度之星/初赛上】D:轮子上的度度熊的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【2012百度之星/初赛上】C:集合的交
- 下一篇: 【2012百度之星/初赛下】A:度度熊就