天天看点

状压dp

hdoj-1074:

题意就是:有n个作业每个作业有一个最后完成时间和一个需要的时间,如果超过最后完成的时间,超过一天扣一分,求最少要扣多少分

思路:根据题意 n最多有15,所以把状态压缩成2进制,每一位0表示还没有选 1 表示选了,状态转移就是 前一个转态到后一个 根据二进制的性质

,最后还要输出路径,所以要 保留他,用一个结构体保留他的前驱和他由前驱到现在 需要完成那个作业;

代码;

状压dp
状压dp

View Code