P1802 5倍經驗日

2022-07-10 06:27:08 字數 1362 閱讀 1324

01揹包問題變形

}將狀態轉移矩陣改為1維的時候,出現問題

錯**:

#includeusing namespace std;

#define ll long long

const int n = 1010;

int win[n], lose[n], use[n];

int f[n];

int n, x;

int main()

}cout << (ll) f[x] * 5 << endl;

return 0;

}

錯在這個地方:

f[j] += lose[i];

if(j >= use[i]) f[j] = max(f[j], f[j - use[i]] + win[i]);

這個地方對於use[i] != 0沒有問題,但是對於use[i] = 0的情況必錯,因為當use[i] = 0時,先將原本的f[j] += lose[i], 當j >= 0時,f[j] = max(f[j], f[j] + win[i]);此處f[j]必被更新為f[j] + win[i], 即被更新成原本的f[j] + win[i] + lose[i], 顯然錯。

正確**:

#includeusing namespace std;

#define ll long long

const int n = 1010;

int win[n], lose[n], use[n];

int f[n];

int n, x;

int main()

f[j] = max(f[j] + lose[i], f[j - use[i]] + win[i]);}}

cout << (ll) f[x] * 5 << endl;

return 0;

}

P1802 5倍經驗日 題解

傳送門 現在樂鬥有活動了!每打乙個人可以獲得5倍經驗!absi2011卻無奈的看著那一些比他等級高的好友,想著能否把他們乾掉。乾掉能拿不少經驗的。現在absi2011拿出了x個迷你裝藥物 嗑藥打人可恥 準備開始與那些人打了 由於迷你裝乙個只能管一次,所以absi2011要謹慎的使用這些藥,悲劇的是,...

洛谷P1802 5倍經驗日

現在樂鬥有活動了!每打乙個人可以獲得5倍經驗!absi2011卻無奈的看著那一些比他等級高的好友,想著能否把他們乾掉。乾掉能拿不少經驗的。現在absi2011拿出了x個迷你裝藥物 嗑藥打人可恥 準備開始與那些人打了 由於迷你裝乙個只能管一次,所以absi2011要謹慎的使用這些藥,悲劇的是,沒到達最...

洛谷 P1802 5倍經驗日

現在樂鬥有活動了!每打乙個人可以獲得5倍經驗!absi2011卻無奈的看著那一些比他等級高的好友,想著能否把他們乾掉。乾掉能拿不少經驗的。現在absi2011拿出了x個迷你裝藥物 嗑藥打人可恥 準備開始與那些人打了 由於迷你裝乙個只能管一次,所以absi2011要謹慎的使用這些藥,悲劇的是,沒到達最...