本机运行结果与洛谷评测结果不一致???

P1064 [NOIP2006 提高组] 金明的预算方案

月影 @ 2018-08-25 19:13:51

莫名WA第九个点
评测显示是第二个字符不同(该是6却是3)
然而我下载输入输出文件后发现,不管是我手动输入数据还是用fstream直接读文件,运行结果都是正确的。
真让人摸不着头脑,求大佬解惑

附代码:

#include<iostream>
using namespace std;
struct jh
{
    int jg;
    int zyx;
};
int max(int a,int b)
{
    if (a>b) return a;
    else return b;
}
int main()
{
    int n,m;
    cin >> n >> m;
    jh zj[m],fj1[m],fj2[m];
    int fjs[m],dzb[m]; 
    for (int i=0;i<m;i++) 
    {
        fjs[i]=0;
        dzb[i]=0;
    }
    int zjs=0;
    int a,b,c;
    for (int i=0;i<m;i++)
    {
        cin >> a >> b >> c;
        if (c==0)
        {
            zj[zjs].jg=a;
            zj[zjs].zyx=b;
            dzb[i+1]=zjs;
            zjs++;
        }
        else
        {
            c=dzb[c];
            fjs[c]++;
            if (fjs[c]==1)
            {
                fj1[c].jg=a;
                fj1[c].zyx=b;
            }
            else
            {
                fj2[c].jg=a;
                fj2[c].zyx=b;
            }
        }
    }
    int res[n+1];
    for (int i=0;i<n+1;i++) res[i]=0;
    for (int i=0;i<zjs;i++)
      for (int j=n-zj[i].jg;j>-1;j--)
      {
        res[j+zj[i].jg]=max(res[j+zj[i].jg],res[j]+zj[i].jg*zj[i].zyx);
        if (fjs[i]==1)
        {
            int jg=zj[i].jg+fj1[i].jg;
            if (j+jg<n+1)
            {
                int xg=zj[i].jg*zj[i].zyx+fj1[i].jg*fj1[i].zyx;
                res[j+jg]=max(res[j+jg],res[j]+xg);
            }
        }
        else if (fjs[i]==2)
        {
            int jg=zj[i].jg+fj1[i].jg;
            int xg=zj[i].jg*zj[i].zyx+fj1[i].jg*fj1[i].zyx;
            if (j+jg<n+1)
            {
                res[j+jg]=max(res[j+jg],res[j]+xg);
            }
            jg=jg+fj2[i].jg;
            xg=xg+fj2[i].jg*fj2[i].zyx;
            if (j+jg<n+1)
            {
                res[j+jg]=max(res[j+jg],res[j]+xg);
            }
            jg=jg-fj1[i].jg;
            xg=xg-fj1[i].jg*fj1[i].zyx;
            if (j+jg<n+1)
            {
                res[j+jg]=max(res[j+jg],res[j]+xg);
            }
        }
      }
    int maxnum=0;
    for (int i=0;i<n+1;i++) maxnum=max(maxnum,res[i]);
    cout << maxnum << endl;
    return 0;
}

by RiverFun @ 2018-08-25 19:21:58

@月影 洛谷经常出现这种情况,你在洛谷IDE上修改代码吧


by LCuter @ 2018-08-25 19:33:47

本地过了就是过了,OJ没过是OJ的问题.jpg


by _sry @ 2018-08-25 19:43:19

有可能爆内存


by 月影 @ 2018-08-25 20:23:29

洛谷IDE上的运行结果确实是错误结果,然而内存之类的没有什么问题(用了不到1M内存),相同的代码相同的数据本地的运行结果也确实是正确的,我也找不出方法有什么问题,洛谷IDE又没法进行调试,所以,我选择放弃AC这道题。。。 无论如何,谢谢解答。


by ninedays9九天 @ 2018-08-29 11:01:01

特判吧


|