| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
喜欢动态规划的进来!!!
程序哪里错了!!!
#include<iostream>
#include<algorithm>
using namespace std;
int f[32000],N,K;
struct node
{
int L,P,S;
}W[128];
int cmp(node a,node b)
{
return a.S<b.S;
}
inline int big(int a,int b)
{
return a>b?a:b;
}
void DP()
{
int i,j,t,s;
sort(W,W+K,cmp);
memset(f,0,sizeof(f));
int g,p;
for(i=0;i<K;i++)
{
g=f[W[i].S];
p=W[i].P*W[i].L;
int mm=f[W[i].S],id=0;
t=W[i].S-1;
for(j=W[i].S+W[i].L-1;j>=W[i].S;j--,t--)
{
if(t<0)
{
if(f[j]<W[i].P*j)
{
f[j]=W[i].P*j;
}
continue;
}
else
{
g=big(g-W[i].P,f[t]);
}
if(g+p>f[j])
{
f[j]=g+p;
if(f[j]>mm)
{
mm=f[j];
id=j;
}
}
}
s=W[i].S+W[i].L-1;;
if(id==0)
{
continue;
}
for(j=s+1;j<=N;j++)
{
f[j]=f[s];
}
}
printf("%d\n",f[N]);
}
int main()
{
while(scanf("%d%d",&N,&K)!=EOF)
{
int i;
for(i=0;i<K;i++)
{
scanf("%d%d%d",&W[i].L,&W[i].P,&W[i].S);
}
DP();
}
return 1;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator