APIO2015巴厘島的雕塑 數字DP

2022-05-12 12:41:31 字數 1118 閱讀 5880

題目:

對於a>1,將答案各位全置1,然後從高位到低位改成0判斷是否可行;

用f[i][j]陣列代表前i個數分成j組是否可行,轉移是列舉最後一段的左端點k,然後看看後面整個一段的和能否滿足要求,如果前後都滿足就表示i,j狀態也可行;

對於a=1,可以貪心地認為分組數量越少越好,所以可行性轉化為最優性,省去一維,轉移條件同上,取min即可;

先寫了個wa一半的版本:

#include#include

#include

using

namespace

std;

typedef

long

long

ll;int

n,a,b,len;

ll f2[

2005],ans,s[2005

];bool f[105][105];//

可行性bool

dp1(ll x)

bool

dp2(ll x)

return f2[n]<=b;

}int

main()

}else

}printf(

"%lld

",ans);

return0;

}

囧後來又直接改成別的寫法a的,但還是不太明白原來的寫法為什麼不行,有什麼不同。

**如下:

#include#include

#include

using

namespace

std;

typedef

long

long

ll;int

n,a,b,len;

ll f2[

2005],ans,s[2005

];bool f[105][105];//

可行性ll dp1()

return

ans;

} ll dp2()

if(f2[n]<=b)ans-=(1ll<1

;

else ans++;

}return

ans;

}int

main()

APIO2015 巴厘島的雕塑

印尼巴厘島的公路上有許多的雕塑,我們來關注它的一條主幹道。在這條主幹道上一共有 nn 座雕塑,為方便起見,我們把這些雕塑從 11 到 nn 連續地進行標號,其中第 ii 座雕塑的年齡是 y iyi 年。為了使這條路的環境更加優美,想把這些雕塑分成若干組,並通過在組與組之間種上一些樹,來吸引更多的遊客...

BZOJ4069 APIO2015 巴厘島的雕塑

那麼只要存在 f n j tr ue a j b 第 st 位就能夠為0,更新 an s 這裡要列舉 st i,j k,時間複雜度 o n3log i 1nyi 然後發現最後乙個子任務被卡 這時 n 2000 注意到 a 1 我們特判這種情況,把dp的 j 這一維去掉,改為轉移選取組數的最小值 選取...

APIO 2015 耶加達的摩天樓

題目鏈結 演算法 考慮將每個 doge 向其所能到達的樓連邊 直接spfa求單源最短路可以獲得57分 那麼 怎樣拿到滿分呢?我們發現這張圖的邊的數量達到了nm的數量級 考慮分塊 將每個點拆成sqrt n 個點 將每個pi sqrt n 的點向 bi pi 連邊 這樣的邊不會超過n sqrt n 條 ...