CF1862F Magic Will Save the World

题解

Posted by WrongAnswer_90's Blog on August 25, 2023

bitset 优化可行性 DP。 注意到所有怪物需要魔法的和是一定的,问题转为判定是否能够恰好消耗 $i$ 点水魔法和 $sum-i$ 点火魔法,用 $f_i$ 表示这种分割方案是否可行,直接 dp 大概率会超时,使用 bitset 优化即可,最后根据 $f_i$ 统计答案。

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
int T,A,B,n,minn,sum;
inline void mian()
{
    read(T);int x;
    while(T--)
    {
        read(A,B,n),sum=0,minn=INF;
        bitset<1000001> f;f[0]=1;
        while(n--)read(x),f|=(f<<x),sum+=x;
        for(int i=0;i<=1000000;++i)if(f[i])minn=min(minn,max((i-1)/A+1,(sum-i-1)/B+1));
        write(minn,'\n');
    }
}