#include<bits/stdc++.h>
#define N 10010
using namespace std;
int a[N],k[N],t[N],dp[N];
int main()
{
int hour1,minute1,hour2,minute2;
scanf("%d:%d",&hour1,&minute1);
scanf("%d:%d",&hour2,&minute2);
hour1 = hour1*100+minute1;
hour2 = hour2*100+minute2;
int time=0;
for (int i=hour1+1;i<=hour2;i++)
{
time++;
if (i%100==60) i = (i/100+1)*100;
}
int n;
scanf("%d",&n);
for (int i=1;i<=n;i++)
scanf("%d%d%d",&t[i],&a[i],&k[i]);
for (int i=1;i<=n;i++)
{
if (k[i]!=0)
{
for (int j=time;j>=t[i];j--)
{
if (k[i]==1) dp[j] = max(dp[j],dp[j-t[i]]+a[i]);
else
{
for (int u=0;u<=k[i] && u*t[i]<=j;u++)
dp[j]=max(dp[j],dp[j-u*t[i]]+u*a[i]);
}
}
}
else
{
for (int j=t[i];j<=time;j++)
dp[j] = max(dp[j],dp[j-t[i]]+a[i]);
}
}
cout << dp[time] << endl;
return 0;
}
上面的输出为 11。
#include <bits/stdc++.h>
#include <cstdio>
using namespace std;
int t[10010], a[10010], k[10010], dp[10010];
int main()
{
int hour1, minute1, hour2, minute2;
scanf("%d:%d", &hour1, &minute1);
scanf("%d:%d", &hour2, &minute2);
hour1 = hour1*100+minute1;
hour2 = hour2*100+minute2;
int time = 0;
for (int i=hour1+1;i<=hour2;i++) {
time++;
if (i%100==60) i=(i/100+1)*100;
}
int n;
cin >> n;
for(int i=1;i<=n;i++)
cin >> t[i] >> a[i] >> k[i];
for(int i=1;i<=n;i++)
{
if(k[i]!=0)
{
for(int j=time;j>=t[i];j--)
{
if(k[i]==1) dp[j] = max(dp[j], dp[j-t[i]]+a[i]);
else
{
for(int u=0;u<=k[i] && u*t[i]<=j;u++)
dp[j] = max(dp[j], dp[j-u*t[i]]+u*a[i]);
}
}
}
else
{
for(int j=t[i];j<=time;j++)
dp[j]-max(dp[j], dp[j-t[i]]+a[i]);
}
}
cout << dp[time] << endl;
return 0;
}
这坨代码输出为 10。
求问这两段代码哪里不一样?