題意:
有\(n\)張卡片,每張卡片數字為\(1,2,3,4\),有張棋譜,從\(1-n\),從\(1\)出發,到達\(n\),每個位置會有乙個分數,你可以安排卡片的順序,每次拿一張卡片,你就會向前走卡片上面的數字步,然後得到該位置的分數,問如何安排到達\(n\)的時候分數最大(每種卡片最多40張,保證所有卡片之和剛好到達\(n\)點)。
題解:一開始覺得是01揹包裸題,列舉選擇的卡片和所在位置,但好像不行?這題是個卡片的順序有關,而揹包問題是選或不選,題目上面說每張卡片最多40張,那麼可以開四維dp,每一維表示一種卡片的數目,那麼每一種方案的狀態有四種情況轉移過來,即最後選擇的是四種中的哪一種?取max就可以了,轉移時保證每一種必須存在至少一張。也對應dp的原理,沒有後效性,最開始那種dp,是有後效性的,因為到達第\(pos\)的位置,所剩的卡片可能不一樣,但是列舉卡片不管前面是怎麼排列的,用完這幾張卡片到達的位置是相同的,且剩餘的卡片也是相同的。
#include "bits/stdc++.h"
using namespace std;
const int n=42;
int n,m,dp[n][n][n][n],w[505],x,ans,cnt[5];
int main()
dp[0][0][0][0]=w[1];
for(int i=0;i<=cnt[1];i++)
for(int j=0;j<=cnt[2];j++)
for(int k=0;k<=cnt[3];k++)
for(int c=0;c<=cnt[4];c++)
cout
}
NOIP提高組2010 烏龜棋
題目 題目描述 為了準備乙個獨特的頒獎典禮,組織者在會場的一片矩形區域 可看做是平面直角座標系的第一象限 鋪上一些矩形地毯。一共有 n 張地毯,編號從 1 到n 現在將這些地毯按照編號從小到大的順序平行於座標軸先後鋪設,後鋪的地毯覆蓋在前面已經鋪好的地毯之上。地毯鋪設完成後,組織者想知道覆蓋地面某個...
NOIP 2010提高組題解
這是同機房一位巨佬在ak ioi之後發表的感言。為了學習他的這種精神 我太菜了,但我也想像他一樣ak ioi qaq 這篇題解就誕生了。戰車被馬拉著 直接模擬。注意入隊的時候打上標記,出隊的時候清楚標記,每次查詢的時候直接o 1 o 1 o 1 查詢標記即可。時間複雜度o n o n o n 一直在...
NOIP2010 提高組合集
noip 2010 提高組合集 t1 機器翻譯 模擬題,用乙個棧模擬,桶記錄即可。include include include include include define n 1010 using namespace std mapmp int que n a n int l,r int mai...