求助:Linux与Windows的差别
查看原帖
求助:Linux与Windows的差别
230749
USSENTERPRISE楼主2020/5/11 16:07

本题第一个测试点在Windows上运行正常,而在Linux(洛谷评测机)上输出始终为0

求助,有哪位大佬能告诉我这是怎么回事?

注:数据的输入是正常的,在Linux下检测也没有出现任何数据输入上的不对

附:我的代码:

#include<cstdio>
#include<cstdlib>
#include<cctype>
#include<algorithm>

using namespace std;

#define ll long long
#define ull unsigned long long
#define rg register

namespace Enterprise{

    inline int read(){
        int s=0,f=0;
        int ch=getchar();
        while(!isdigit(ch)) f|=(ch=='-'),ch=getchar();
        while(isdigit(ch)) s=(s<<1)+(s<<3)+(ch^48),ch=getchar();
        return f?-s:s;
    }
    const int inf=999999;
    const int N=1e7+15;
    int w[N],v[N],tot;
    int n,t1h,t2h,t1m,t2m,m;

    int f[N];

    inline void IEE(){
        // t1h=read(),t1m=read(),t2h=read(),t2m=read(),n=read();
        scanf("%d:%d %d:%d %d",&t1h,&t1m,&t2h,&t2m,&n);
        m=t2h*60+t2m-(t1h*60+t1m);
        //printf("%d %d %d %d %d %d\n",t1h,t1m,t2h,t2m,n,m);
        for(int i=1;i<=n;i++){
            int wi,vi,ti,p=1;
            scanf("%d %d %d",&wi,&vi,&ti);
            //printf("%d %d %d\n",wi,vi,ti);
            if(!ti) ti=inf;
            while(ti){
                
                w[++tot]=wi*p;
                v[tot]=vi*p;
                p<<=1;
                ti-=p;
                if(ti<p){
                    w[++tot]=ti*wi;
                    v[tot]=ti*vi;
                    break;
                }
            }
        }
        
        for(rg int i=1;i<=tot;i++){
            for(rg int j=m;j>=w[i];j--){
                f[j]=max(f[j],f[j-w[i]]+v[i]);
            }
        }

        printf("%d\n",f[m]);

    }
}

signed main(){
    Enterprise::IEE();
    //system("pause");
    return 0;
}
2020/5/11 16:07
加载中...