http://acm.hdu.edu.cn/showproblem.php?pid=1074

状压dp不是很懂,看着别人的代码写的,很长时间才看懂。 dp[i]记录(1<<n)-1个状态第i状态的最小结果。用pre数组记录每一个状态的前驱。

用dfs输出路径。

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <algorithm>
 4 #define maxn 16
 5 using namespace std;
 6 const int inf=1<<29;
 7
 8 int dp[1<<16];
 9 int t,n;
10 int pre[1<<16];
11 struct node
12 {
13     char name[110];
14     int d;
15     int c;
16 }p[maxn*10];
17
18 void dfs(int w)
19 {
20     if(w==0) return ;
21     int pos=0;
22     for(int i=0; i<n; i++)
23     {
24         if((w&(1<<i))!=0&&(pre[w]&(1<<i))==0)
25         {
26             pos=i;
27             break;
28         }
29     }
30     dfs(pre[w]);
31     printf("%s\n",p[pos].name);
32 }
33
34 int main()
35 {
36     scanf("%d",&t);
37     while(t--)
38     {
39         scanf("%d",&n);
40         for(int i=0; i<n; i++)
41         {
42             scanf("%s%d%d",p[i].name,&p[i].d,&p[i].c);
43         }
44         for(int i=0; i<(1<<n); i++)
45         {
46             dp[i]=inf;
47         }
48         dp[0]=0;
49         for(int i=0; i<(1<<n); i++)
50         {
51             for(int j=0; j<n; j++)
52             {
53                 if(i&(1<<j)) continue;
54                 int sum=0;
55                 for(int k=0; k<n; k++)
56                 {
57                     if(i&(1<<k)) sum+=p[k].c;
58                 }
59                 sum+=p[j].c;
60                 if(sum>p[j].d) sum-=p[j].d;
61                 else sum=0;
62                 if(dp[i|(1<<j)]>dp[i]+sum)
63                 {
64                     dp[i|(1<<j)]=dp[i]+sum;
65                     pre[i|(1<<j)]=i;
66                 }
67             }
68         }
69         printf("%d\n",dp[(1<<n)-1]);
70         dfs((1<<n)-1);
71     }
72     return 0;
73 }

View Code

转载于:https://www.cnblogs.com/fanminghui/p/4025249.html

hdu 1074 Doing Homework相关推荐

  1. HDU 1074 Doing Homework【状态压缩DP】

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1074 题意: 给定作业截止时间和完成作业所需时间,比截止时间晚一天扣一分,问如何安排作业的顺序使得最 ...

  2. Doing Homework HDU - 1074

    Doing Homework HDU - 1074 题意: 有n个任务,每个任务有一个截止时间,超过截止时间一天,要扣一个分. 求如何安排任务,使得扣的分数最少. (1<=n<=15) 题 ...

  3. 动态规划训练16 [Doing Homework HDU - 1074 ]

    Doing Homework HDU - 1074 这是一道状态压缩DP(从N <= 15就可以看出来). 我们定义二进制状态S代表的是目前已经安排好的任务 dp[S].val代表的是目前已经安 ...

  4. HDUOJ 1074 Doing Homework

    HDUOJ 1074 Doing Homework 题目链接 Problem Description Ignatius has just come back school from the 30th ...

  5. hdu 1074 状压dp

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1074 题意:有n个作业,对于每一个作业有一个deadline,有一个完成这作业所需要的时间.如果超过d ...

  6. HDU 1789 Doing Homework again(馋)

    意甲冠军  参加大ACM竞争是非常回落乔布斯  每一个工作都有截止日期   未完成必要的期限结束的期限内扣除相应的积分   求点扣除的最低数量 把全部作业按扣分大小从大到小排序  然后就贪阿  能完毕 ...

  7. hdu 1789 Doing Homework again

    又是一次初始化惹的货!!! 超级水的贪心...害的我以为思路错误~~ ~ #include<iostream>#include<cstdio>#include<cmath ...

  8. HDU 1789 Doing Homework again (贪心)

    http://blog.csdn.net/dgq8211/article/details/7538060 题目链接:Click here~~ 题意: 有 n 门作业,每门作业都有自己的截止期限,当超过 ...

  9. kuangbin带你飞专题合集

    题目列表 [kuangbin带你飞]专题一 简单搜索 [kuangbin带你飞]专题二 搜索进阶 [kuangbin带你飞]专题三 Dancing Links [kuangbin带你飞]专题四 最短路 ...

  10. 算法学习经典例题整理

    陆续会对本篇博客进行更新! 搜索:https://vjudge.net/contest/292597 区间DP:https://vjudge.net/contest/293892 树状背包:https ...

最新文章

  1. asp.net的控件视图状态
  2. spring 动态数据源
  3. 使用LDAP保护Java EE6中的Web应用程序
  4. 《Linux网络接口》---------struct ifreq struct ifconf
  5. Lecture 21 Parallel Algorithms II
  6. [jQuery] 说说看jQuery的选择器有哪些?
  7. 15个优雅的Python编程技巧,掌握后瞬间玩转Python
  8. linux_iptables 详解
  9. 在ubuntu下打开.TXT文件,中文显示为乱码
  10. 动态规划01背包问题入门学习,详细笔记,推荐阅读
  11. 使用apt更新和升级系统软件
  12. [每日一氵]协方差矩阵计算
  13. VS-code输入感叹号没有提示
  14. docker学习(十三)docker安装dejavu
  15. 利用Windows11安卓子系统对APP进行渗透测试
  16. python字符串对象所有基本方法简要
  17. http请求过程(访问一个页面,发生了怎样的网络请求?)
  18. 停车场管理系统页面实现(1)登陆页面设计
  19. 还愁不能解密MD5值?简单代码就能实现md5加密解密,内附源码,亲测可用
  20. webView简单使用:网页中有电话,在客户端点击打电话(一)

热门文章

  1. 五、OpenStack安装Nova
  2. vs 2008 xp 试用版 升级办法
  3. 中国未来5年IP地址需求总量高达345亿
  4. 开源文本编辑器Vim的作者Bram Moolenaar推出了新的编程语言Zimbu.doc
  5. 网页显示mysql数据库到表格数据_在网页中如何将数据库的数据显示出来
  6. Unity中Json文件编写注意
  7. 一对多关联关系映射和设置级联属性
  8. 同济大学计算机保研名单,同济大学2021届保研率27.8%,主要保研本校、复交清国...
  9. layui 滚动加载与ajax,909422229_layUi关于ajax与loading问题
  10. 小度智能音箱维修点_进击的小钢炮!体验小度智能音箱大金刚