月影 @ 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
特判吧