您的位置:首页 > 其它

HDU 1074 Doing Homework

2016-04-10 20:48 260 查看
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1074

题意:有n个作业待做,每个作业都有用时和期限,如果做完的时候超过了期限,就要扣超出期限时间的分数,问怎么安排做作业的顺序,可以使得扣分最少,如果有多种方案,输出字典序最小的。



思路:状态压缩Dp,n<=15,用二进制表状态,每一位对应一科作业,如果为0,则还没做,为1,则已做过。dp[i],表示当前作业完成状态为i时的最小扣分,那么答案就是dp[(1<<n) - 1]。转移的时候去枚举作业j,去求当前状态i的上一个状态,更新答案。这里枚举j的时候应该倒着枚举,如果有多个j可以达到一样的效果,那么这里肯定是编号较大的优先(字典序越大),由于j是当前状态中最后一个完成的,所以保证答案字典序最小。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: