记录编号 |
34799 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[POI 1998] 潜水员的问题 |
最终得分 |
100 |
用户昵称 |
QhelDIV |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.207 s |
提交时间 |
2012-01-05 19:54:20 |
内存使用 |
0.30 MiB |
显示代码纯文本
#include <fstream>
#include <cstdlib>
using namespace std;
ifstream fin("ple.in");
ofstream fout("ple.out");
int BoxN,OxSum,NSum,O[1002],N[1002],M[1002];
int f[80][80];
void Initialize()
{
int i,j,k;
fin>>OxSum>>NSum>>BoxN;
for(i=1;i<=BoxN;i++)
fin>>O[i]>>N[i]>>M[i];
for(j=0;j<=79;j++)
for(k=0;k<=79;k++)
f[j][k]=100000000;
f[0][0]=0;
}
void z_o_pack()
{
int i,j,k,counter;
for(i=1;i<=BoxN;i++)
for(j=79;j>=0;j--)
for(k=79;k>=0;k--)
if(j>=O[i] && k>=N[i])
if(f[j-O[i]][k-N[i]]+M[i]<f[j][k])
f[j][k]=f[j-O[i]][k-N[i]]+M[i];
}
int main()
{
Initialize();
z_o_pack();
int i,j,Min=100000000;
for(i=OxSum;i<=79;i++)
for(j=NSum;j<=79;j++)
if(Min>f[i][j])
Min=f[i][j];
fout<<Min<<endl;
fin.close();
fout.close();
return 0;
}