记录编号 |
79565 |
评测结果 |
AAAAAAAAAA |
题目名称 |
垃圾陷阱 |
最终得分 |
100 |
用户昵称 |
digital-T |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.003 s |
提交时间 |
2013-11-05 22:02:29 |
内存使用 |
0.31 MiB |
显示代码纯文本
#include<fstream>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
ifstream fi("well.in");
ofstream fo("well.out");
const int INF=0x7FFFFFFF;
int D,G,dp[101];
class gar
{
public:
int T,F,H;
}g[101];
bool op(gar x,gar y){return x.T<y.T;}
int main()
{
fi>>D>>G;
for(int i=1;i<=G;i++)fi>>g[i].T>>g[i].F>>g[i].H;
sort(g+1,g+G+1,op);
bool boo;
memset(dp,0,sizeof(dp));
dp[0]=10;//爬到j高度时最大的剩余存活时间
for(int i=1;i<=G;i++)
{
boo=false;
for(int j=D;j>=0;j--)
if(dp[j]>=g[i].T)
{
if(j+g[i].H>=D)
{
fo<<g[i].T<<endl;
goto NEXT;
}
if(dp[j]>dp[j+g[i].H])
dp[j+g[i].H]=dp[j];
dp[j]+=g[i].F;
boo=true;
}
if(!boo)break;
}
fo<<dp[0]<<endl;
NEXT:;
return 0;
}