大佬们,我开二维写的,为什么最后就不对呢,显示wa
  • 板块P1833 樱花
  • 楼主cahser
  • 当前回复5
  • 已保存回复5
  • 发布时间2022/4/20 16:23
  • 上次更新2023/10/28 03:15:24
查看原帖
大佬们,我开二维写的,为什么最后就不对呢,显示wa
683007
cahser楼主2022/4/20 16:23

代码如下,知道要用二进制优化,但是我这样写会为什么最后会错两个点呢,想知道原因。

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;

const int N = 10005;

string s1,s2;
int n;
int t[N],c[N],p[N];
int f[N][1005];

int main()
{
    cin>>s1>>s2>>n;
    int hour=s2[0]-'0'-(s1[0]-'0');
    int minute=s2[3]-'0'+(s2[2]-'0')*10-(s1[3]-'0'+(s1[2]-'0')*10);
    if(minute<0) hour--,minute=minute+60;
    int tm=hour*60+minute;
    //cout<<hour<<" "<<minute<<endl;
    //cout<<tm<<endl;
    for(int i=1;i<=n;i++) cin>>t[i]>>c[i]>>p[i];
    for(int i=1;i<=n;i++)
    for(int j=0;j<=tm;j++){
        if(p[i]==0){
            for(int k=0;k*t[i]<=j;k++)
            f[i][j]=max(f[i][j],f[i-1][j-k*t[i]]+c[i]*k);
        }
        else{
            for(int k=0;k*t[i]<=j && k<=p[i];k++)
            f[i][j]=max(f[i][j],f[i-1][j-k*t[i]]+c[i]*k);
        }
    }
    int res=0;
    cout<<f[n][tm];
    return 0;
}
2022/4/20 16:23
加载中...