洛谷RE,CODEV和本地AC,请问是什么原因
查看原帖
洛谷RE,CODEV和本地AC,请问是什么原因
7650
oscar123楼主2016/11/12 20:22

请问这种问题会不会可能影响NOIP考试,请问神犇们我有没有犯什么被高版本编译器容错的问题,谢谢

#include <iostream>
#include <cstdio>
using namespace std;
bool is[32001][61][61];
int f[32001][61];
struct item{
    int v,p,q;
}a[700];
int main()
{
    int n=0,m=0;
    //freopen("1.txt","r",stdin);
    cin>>m>>n;
    for (int i=1;i<=n;i++)
        cin>>a[i].v>>a[i].p>>a[i].q;
    for (int i=1;i<=n;i++)
    {
        for (int j=m;j>=0;j--)
        {
            if (is[j][i-1][a[i].q]==true || a[i].q==0 && j+a[i].v<=m)
            {
                if (f[j+a[i].v][i]<f[j][i-1]+a[i].v*a[i].p)
                {
                    f[j+a[i].v][i]=f[j][i-1]+a[i].v*a[i].p;
                    for (int k=1;k<=i-1;k++)
                    {
                        is[j+a[i].v][i][k]=is[j][i-1][k];
                    }
                    is[j+a[i].v][i][i]=true;
                }
            }
            else if (j+a[i].v+a[a[i].q].v<=m)
            {
                if (f[j+a[i].v+a[a[i].q].v][i]<f[j][i-1]+a[i].v*a[i].p+a[a[i].q].v*a[a[i].q].p)
                {
                    f[j+a[i].v+a[a[i].q].v][i]=f[j][i-1]+a[i].v*a[i].p+a[a[i].q].v*a[a[i].q].p;
                    for (int k=1;k<=i-1;k++)
                    {
                        is[j+a[i].v+a[a[i].q].v][i][k]=is[j][i-1][k];
                    }
                    is[j+a[i].v+a[a[i].q].v][i][i]=true;
                    is[j+a[i].v+a[a[i].q].v][i][a[i].q]=true;
                }
            }
            if (f[j][i]<f[j][i-1])
            {
                f[j][i]=f[j][i-1];
                for (int k=1;k<=i-1;k++)
                    is[j][i][k]=is[j][i-1][k];
            }
        }
    }
    int answer=0;
    for (int i=1;i<=m;i++)
    answer=max(f[i][n],answer);
    cout<<answer;
} 

2016/11/12 20:22
加载中...