RE,数据自己跑没问题,20分求助QAQ
查看原帖
RE,数据自己跑没问题,20分求助QAQ
1051196
C_Wang楼主2023/8/8 17:51

搜索写的

#include <bits/stdc++.h>

using namespace std;

int n, m, ans;


struct Node
{
    int a, b;
    double val;
}node[101];

bool cmp(Node a, Node b)
{
    return a.val > b.val;
}

int f(int num, int res)
{
    int tot = 0;
    for(int i = 1; i + num <= m; i++)
    {
        if(res >= node[num + i].a)
        {
            res -= node[num + i].a;
            tot += node[num + i].b;
        }
        else return (int)(tot + res * node[num + i].val);
    }
    return tot;
}

void work(int num, int res, int sum)
{
    ans = max(ans, sum);
    if(num > n) return;
    if(f(num, res) + sum > ans)  work(num + 1, res, sum);
    if(node[num].a <= res) work(num + 1, res - node[num].a, sum + node[num].b);
}

int main()
{
    scanf("%d%d", &n, &m);
    for(int i = 1; i <= m; i++)
    {
        scanf("%d%d", &node[i].a, &node[i].b);
        node[i].val =1.0 * node[i].b / node[i].a;
    }
    sort(node + 1, node + m + 1, cmp);
    work(1, n, 0);
    printf("%d\n", ans);
    return 0;
}
2023/8/8 17:51
加载中...