题目链接:

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

题意:

给定作业截止时间和完成作业所需时间,比截止时间晚一天扣一分,问如何安排作业的顺序使得最终扣分最少?

分析:

最多只有15节课,可以将完成作业的情况进行状态压缩,用二进制表示,枚举出状态,进行dp。
然后注意输入的时候本身就是字典序最小的,倒着来一遍,先不写后面的作业,这样最终得到的答案就是按字典序小的排列的了。
dp最初忘记1<<maxn,悲哀的TLE了两发。。

代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
#define sa(a) scanf("%d", &a)
#define sal(a) scanf("%I64d", &a)
const int maxn = 15 + 5, INF = 0x3f3f3f3f;
struct hwk{char s[105]; int d;int c;};
hwk p[maxn];
struct DP{int day; int pre; int v;};
DP dp[1<<maxn];
int n;
void print(int st)
{if(!st) return;print(dp[st].pre);int now = dp[st].pre^st;int res;for(int i = 0; i < n; i++){if(now >> i & 1) {res = i;break;}}printf("%s\n", p[res].s);
}
int main (void)
{int T;sa(T);while(T--){sa(n);for(int i = 0; i < (1<<n); i++){dp[i].day = 0;dp[i].pre = 0;dp[i].v = INF;}dp[0].v = 0;for(int i = 0; i < n; i++){scanf("%s", p[i].s);sa(p[i].d); sa(p[i].c);}int en = 1 << n;for(int i = 1; i < en; i++){for(int j = n - 1; j >= 0; j--){if(i>>j & 1){int be = i - (1 << j);int tmp = dp[be].day + p[j].c - p[j].d;if(tmp < 0) tmp = 0;if(tmp + dp[be].v < dp[i].v){dp[i].v = tmp + dp[be].v;dp[i].pre = be;dp[i].day = dp[be].day + p[j].c;}}}}printf("%d\n", dp[en - 1].v);print(en -1);}return 0;
}

转载于:https://www.cnblogs.com/Tuesdayzz/p/5758678.html

HDU 1074 Doing Homework【状态压缩DP】相关推荐

  1. HDU 4997 Biconnected (状态压缩DP)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4997 题意:一个n个点的完全图中去掉一些边.求这个图有多少个子图是边双联通的.(就是去掉任意一条边之后 ...

  2. hdu 5067(状态压缩dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5067 解题思路:这道题开始想复杂了,想用bfs去求出最短距离,其实没必要,因为题目中没有阻碍关系,所以 ...

  3. hdu 5418(状态压缩dp+Floyd)

    点击打开链接 解题思路:这道题目和TSP问题很相似,唯一不同的是同一个点可以重复走几次.... 这道题目只有16个顶点,所以很容易想到状态压缩dp,dp[i][j]表示到达顶点i时的状态为j的最小花费 ...

  4. 状态压缩dp学习小记part2

    继续学习状态压缩的相关知识. 本来准备继续按照上篇博文里提到的那篇论文继续学习,但被矩形完全覆盖虐了回来,决定先做些其他的题增进理解之后再回来做. Zoj 3471 Most Powerful 题目链 ...

  5. Victor and World(spfa+状态压缩dp)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5418 Victor and World Time Limit: 4000/2000 MS (Java/ ...

  6. Light OJ 1316 A Wedding Party 最短路+状态压缩DP

    题目来源:Light OJ 1316 1316 - A Wedding Party 题意:和HDU 4284 差点儿相同 有一些商店 从起点到终点在走过尽量多商店的情况下求最短路 思路:首先预处理每两 ...

  7. 0x56. 动态规划 - 状态压缩DP(习题详解 × 7)

    目录 Problem A. 最短Hamilton路径 ProblemB. 蒙德里安的梦想 Problem C. Corn Fields Problem D. 小国王 Problem E. 炮兵阵地 P ...

  8. POJ 2411 Mondriaan‘s Dream(最清楚好懂的状压DP讲解)(连通性状态压缩DP)

    poj 2411 Mondriaan's Dream(最清晰的状压DP解析) 闫氏DP大法好 我们这里是一列一列地来,因为是一个棋盘性的状态压缩DP,从哪个方向都一样 摆放的小方格总方案数 等价于 横 ...

  9. BZOJ1688|二进制枚举子集| 状态压缩DP

    Disease Manangement 疾病管理 Description Alas! A set of D (1 <= D <= 15) diseases (numbered 1..D) ...

  10. hdu1074 状态压缩dp+记录方案

    题意:       给你一些作业,每个作业有自己的结束时间和花费时间,如果超过结束时间完成,一天扣一分,问你把n个作业完成最少的扣分,要求输出方案. 思路:       状态压缩dp,记录方案数的地方 ...

最新文章

  1. 用java实现一个计算器程序_1.2第一个java程序——hello world
  2. 同软件多个线程设置不同ip_中学校园广播-中学IP网络广播系统解决方案
  3. js经典试题之数据类型
  4. 给 EF Core 查询增加 With NoLock
  5. Linux select 实现并发服务器和客户端
  6. java xml annotation_Annotation与XML配置ID生成策略
  7. 傻瓜式c语言教程,app制作教程简单易学:傻瓜简单自建app,步骤如下
  8. linux 关于回程路由相关问题
  9. 愚人节老板发话了,免费送书 + 免费入驻Java知识星球!!
  10. 基于Huffman算法实现文件压缩解压缩(C语言)
  11. vue更换主题设置主题
  12. 将i am a student转换成 student a am i
  13. iOS 蓝牙扫描枪扫描内容不正确
  14. 向工信部投诉中国联通、移动、电信等运营服务商的权威途径
  15. 文华编程是c 语言吗,文华财经编程规则
  16. 《初级会计电算化实用教程(金蝶KIS专业版)》一第1章 会计电算化概论
  17. 再见了《越狱》——永恒的经典!
  18. iOS打包发布那些事儿
  19. AD按键-矩阵按键-独立按键:
  20. python开发人工智能机器人_Python人工智能?

热门文章

  1. python中while。。。。else的用法
  2. C++输出倒三角加数字
  3. 从零开始刷Leetcode——字符串(13.14.20.28)
  4. 基于CNN目标检测方法(RCNN,Fast-RCNN,Faster-RCNN,Mask-RCNN,YOLO,SSD)行人检测
  5. 模型调参:分步骤的提升模型的精度
  6. [译] Sklearn 与 TensorFlow 机器学习实用指南
  7. 计算机中丢失inetcomm,模块inetcomm.dll已加载,但找不到入口点DllRegisterServer
  8. ubuntu下的jdk进行升级_Ubuntu下JDK升级1.7
  9. jenkins pipeline_Jenkins流水线(pipeline)实战之:从部署到体验
  10. win7 vmware虚拟机 中 mac系统无法上网