莫名CE,求指教

P1417 烹调方案

QAQ永动机 @ 2019-03-30 09:49:51

rt

#include<bits/stdc++.h>
using namespace std;

struct food 
{
    int a;
    int b;
    int c;
};

food a[100],f[100];
int n,t;

bool cmp(food a,food b)
{
    return a.c*b.b<b.c*a.b;
}

int main()
{
    cin>>t>>n;

    for(int i=1;i<=n;i++)
        cin>>a[i].a ;
    for(int i=1;i<=n;i++)
        cin>>a[i].b ;
    for(int i=1;i<=n;i++)
        cin>>a[i].c ;

    sort(a+1,a+n+1,cmp);

    for(int i=1;i<=n;i++)
    {
        for(int j=t;j-a[i].c>= 0;j--)
        {
            int x=a[i].a ;
            int y=a[i].b ;
            int z=a[i].c ;
            int tmp=f[j-z]+x-j*y;
            if(f[j]<tmp)
            {
                f[j]=tmp;
            }
        }
     } 
    cout<<f[t];
    return 0;
}

by 御坂13558号 @ 2019-03-30 10:42:37

cmp应该是一个重载了()运算符的结构体


by 御坂13558号 @ 2019-03-30 10:43:37

啊啊啊当我没说


by 御坂13558号 @ 2019-03-30 10:46:12

应该是:

struct food{
    int a,b,c;
   bool operator < (food b){
        return return a.c*b.b>b.c*a.b;
   }
};

by QAQ永动机 @ 2019-03-30 10:58:50

@璀璨天狼 哈?完整代码能发一下吗(这个我看不懂QAQ)


by 御坂13558号 @ 2019-03-30 11:06:38

#include<bits/stdc++.h>
using namespace std;

struct food 
{
    int a;
    int b;
    int c;
    bool operator < (food b){
        return a.c*b.b>b.c*a.b;
   }

};

food a[100],f[100];
int n,t;

int main()
{
    cin>>t>>n;

    for(int i=1;i<=n;i++)
        cin>>a[i].a ;
    for(int i=1;i<=n;i++)
        cin>>a[i].b ;
    for(int i=1;i<=n;i++)
        cin>>a[i].c ;

    sort(a+1,a+n+1);

    for(int i=1;i<=n;i++)
    {
        for(int j=t;j-a[i].c>= 0;j--)
        {
            int x=a[i].a ;
            int y=a[i].b ;
            int z=a[i].c ;
            int tmp=f[j-z]+x-j*y;
            if(f[j]<tmp)
            {
                f[j]=tmp;
            }
        }
     } 
    cout<<f[t];
    return 0;
}

|