比赛 |
2008haoi模拟训练3 |
评测结果 |
AAAAWETWWA |
题目名称 |
潜水员的问题 |
最终得分 |
50 |
用户昵称 |
BYVoid |
运行时间 |
0.000 s |
代码语言 |
C++ |
内存使用 |
0.00 MiB |
提交时间 |
2008-04-24 11:19:17 |
显示代码纯文本
#include <iostream>
#include <fstream>
#define PY 250
using namespace std;
typedef struct
{
long O,N,W;
}bottle;
ifstream fi("ple.in");
ofstream fo("ple.out");
long F[500][500][1001];
bottle B[1001];
long N,O2,N2,INF;
void init()
{
long i;
fi >> O2 >> N2 >> N;
for (i=1;i<=N;i++)
{
fi >> B[i].O >> B[i].N >> B[i].W;
}
// memset(F,0xf,sizeof(F));
INF=0x7FFFFFF;
}
inline long min(long a,long b)
{
return a<b?a:b;
}
long dynamic(long i,long j,long k)
{
if (i<=0 && j<=0)
return 0;
long m,P=INF,Q=INF;
if (k==1)
{
if(B[1].O>=i && B[1].N>=j)
return B[1].W;
else
return INF;
}
if (k>1)
{
if (F[i+PY][j+PY][k-1]==0)
P=F[i+PY][j+PY][k-1]=dynamic(i,j,k-1);
if (F[i+PY-B[k].O][j+PY-B[k].N][k-1]==0)
Q=F[i+PY-B[k].O][j+PY-B[k].N][k-1]=dynamic(i-B[k].O,j-B[k].N,k-1)+B[k].W;
}
m=min(P,Q);
return m;
}
void print()
{
fi.close();
fo.close();
}
int main()
{
init();
fo << dynamic(O2,N2,N);
print();
return 0;
}