第二档部分分为什么是背包求方案数啊,背包方案数求的不应该是最优方案的方案数嘛

P4799 [CEOI2015 Day2] 世界冰球锦标赛

qip101 @ 2022-11-12 12:20:22

背包的方案数应该是能达到最大价值的方案数?还是我理解有误。

本题应该求的方案数显然不分最优还是不优


by GaryGe @ 2022-11-12 12:30:11

@死在水中的鱼 您说的是测试点5-7吧

如果总票价不超过预算,他有多少种观赛方案

只要不超过就行了


by qip101 @ 2022-11-12 12:36:46

@GaryGe 能不能顺便问一下第一篇题解里面a数组和b数组以及dfs状态是什么啊


by GaryGe @ 2022-11-12 12:41:04

@死在水中的鱼 思路就是用两个dfs分别求出前20个和后20个能组成的和,分别存入两个数组,再排序,对于第一个数组二分能在第二个数组中取到的个数,累加起来就行了,他写的有点复杂,其实就是这个

void dfs1(ll u,ll sum)
{
    if (u>n/2)
    {
        b[++cntb]=sum;
        return;
    }
    dfs1(u+1,sum);
    dfs1(u+1,sum+a[u]);
}

|