守衛者的挑戰

2022-05-11 03:26:39 字數 859 閱讀 6418

開始就想到了用乙個三維的f陣列表示第i場,贏了幾場,還剩下多少空間,但是發現空間的極限最大值是200000,在開乙個三維的陣列就爆記憶體了,後來想到用map實現動態開點,但是這樣時間複雜度過不了,並且還表示不了贏了多少場的狀態,後來參考了一下題解,發現當揹包的空間加到大於n的時候,無論怎麼樣,揹包空間的大小都不可能變為零,所以就可以把空間大於n的一起放到n上,以為在轉移的時候,空間大小為負數依然合法,因為在後來可以通過擴大揹包講空間變為正的,處理的方法是將所有的空間大小都加上乙個值,這要就能保證陣列下標都是正的;

開始還理解錯題意了,以為勝利l場,並且揹包空間非負就可以結束挑戰,卡了很長時間,審題的重要性

1 #include2 #include3 #include4 #include5 #include6 #include7 #include8 #include9 #include10

using

namespace

std;

11int

n,l,k;

12double p[210

];13

int a[210

];14

double f[201][201][410

];15

intmain()

25else

31int n=n+205;32

for(int i=2;i<=n;i++)

40else47}

48}49}

50double ans=0;51

for(int j=l;j<=n;j++)55}

56 printf("

%.6lf

",ans);

57return0;

5859 }

守衛者的挑戰

題目描述 隊員們被傳送到了乙個擂台上,最初身邊有乙個容量為k的包包。擂台賽一共有項挑戰,各項挑戰依次進行。第項挑戰有乙個屬性ai,如果ai 0,表示這次挑戰成功後可以再獲得乙個容量為ai的包包 如果ai 1,則表示這次挑戰成功後可以得到乙個大小為1的地圖殘片。地圖殘片必須裝在包包裡才能帶出擂台,包包...

守衛者的挑戰

初始值為 k 現經過一段數,有 p i 的概率加上第 i 個數 a i 問最後值 geq0 且加了 l 個數的概率。注意到 k 200 都是沒有意義的,於是可以把 k 的範圍視為 0 leq k leq200 直接設 f i j k 表示處理了第 1 i 個數,加了 j 個數,值為 k 的概率。決策...

守衛者的挑戰

守衛者的挑戰 試題描述 輸入第一行三個整數 n l k 第二行n 個實數,第 i 個實數 pi 表示第 i 項挑戰成功的百分比。第三行n 個整數,第 i 個整數 ai 表示第 i 項挑戰的屬性值.輸出乙個整數,表示所求概率,四捨五入保留 6 位小數。輸入示例 3 1 0 10 20 30 1 1 2...