時間限制: 1 sec 記憶體限制: 128 mb
matrix67要在下個月交給老師n篇**,**的內容可以從m個課題中選擇。由於課題數有限,matrix67不得不重複選擇一些課題。完成不同課題的**所花的時間不同。具體地說,對於某個課題i,若matrix67計畫一共寫x篇**,則完成該課題的**總共需要花費ai*x^bi個單位時間(係數ai和指數bi均為正整數)。給定與每乙個課題相對應的ai和bi的值,請幫助matrix67計算出如何選擇**的課題使得他可以花費最少的時間完成這n篇**。
第一行有兩個用空格隔開的正整數n和m,分別代表需要完成的**數和可供選擇的課題數。
以下m行每行有兩個用空格隔開的正整數。其中,第i行的兩個數分別代表與第i個課題相對應的時間係數ai和指數bi。
對於30%的資料,n< =10,m< =5;
對於100%的資料,n< =200,m< =20,ai< =100,bi< =5。
輸出完成n篇**所需要耗費的最少時間。
10 3
2 11 2
2 119
樣例說明:
題解:
一道很水的dp,f[i][j]表示選前i種**完成j篇的最少時間。
g[i][j]為預處理出的在第i種**上寫j篇所需要的時間。
f[i][j]=min(f[i][j],f[i-1][k]+g[i][j-k]);
事實上如果追求效率的話可以降成一維的,當然還可以用快速冪優化。
二維**如下:
#include#include#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
intn,m;
long
long f[21][201],g[21][201],a[21],b[21
];int
main()
}for(i=2;i<=m;i++)}}
cout
}
Vijos P1198 最佳課題選擇
matrix67要在下個月交給老師n篇 的內容可以從m個課題中選擇。由於課題數有限,matrix67不得不重複選擇一些課題。完成不同課題的 所花的時間不同。具體地說,對於某個課題i,若matrix67計畫一共寫x篇 則完成該課題的 總共需要花費ai x bi個單位時間 係數ai和指數bi均為正整數 ...
vijos 1198 最佳課題選擇
matrix67要在下個月交給老師n篇 的內容可以從m個課題中選擇。由於課題數有限,matrix67不得不重複選擇一些課題。完成不同課題的 所花的時間不同。具體地說,對於某個課題i,若matrix67計畫一共寫x篇 則完成該課題的 總共需要花費ai x bi個單位時間 係數ai和指數bi均為正整數 ...
分組揹包 最佳課題選擇
題目描述 matrix67要在下個月交給老師n篇 的內容可以從m個課題中選擇。由於課題數有限,matrix67不得不重複選擇一些課題。完成不同課題的 所花的時間不同。具體地說,對於某個課題i,若matrix67計畫一共寫x篇 則完成該課題的 總共需要花費ai xbi個單位時間 係數ai和指數bi均為...