题意:

给你N个课程, 每个课程有结束的时间 , 和完成这门课程需要的时间

超过课程结束ed时间,每一天就要花费 1点绩点;

然后要求你安排如何做课程使得花费的绩点最少

(看了博客后才发现状态压缩很⑥)

用二进制表示状态 + 前驱标记

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<stack>
using namespace std;
typedef long long ll;
struct Node
{
int now, pre;//当前标号 和之前的标号
int time;//当前时间
int Get;//消耗
};
struct Class
{
int last;
int cost;
char name[30];
}; Node Dp[1<<20];
Class Num[20]; int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n;
scanf("%d",&n);
for(int i = 0; i < n; ++i)
{
scanf("%s %d %d",&Num[i].name,&Num[i].last,&Num[i].cost);
}
memset(Dp,0,sizeof(Dp));
int nn = 1<<n;
for(int s = 1; s < nn; ++s)
{
Dp[s].Get = (1<<30);
for(int j = n-1; j >= 0; --j)
{
if(s & (1 << j))
{
int Pre = s - (1 << j); ///之前的状态
int New = Dp[Pre].time + Num[j].cost - Num[j].last;
if(New < 0) New = 0; ///如果还没到结束时间,新的就为0
if(Dp[Pre].Get + New < Dp[s].Get)
{
Dp[s].Get = Dp[Pre].Get + New;
Dp[s].time = Dp[Pre].time + Num[j].cost;
Dp[s].pre = Pre;
Dp[s].now = j;
}
}
}
}////////////
nn --;
printf("%d\n",Dp[nn].Get);
stack<Class> SS;
while(nn)
{
//printf("%s\n",Num[Dp[nn].now].name);
SS.push(Num[Dp[nn].now]);
nn = Dp[nn].pre;
}
while(!SS.empty())
printf("%s\n",SS.top().name), SS.pop();
}
}

HDU 1074 (DP + 状态压缩)的更多相关文章

  1. HDU 1074 Doing Homework (dp+状态压缩)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1074 题目大意:学生要完成各科作业, 给出各科老师给出交作业的期限和学生完成该科所需时间, 如果逾期一 ...

  2. hdu 5094 Maze 状态压缩dp+广搜

    作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4092176.html 题目链接:hdu 5094 Maze 状态压缩dp+广搜 使用广度优先 ...

  3. hdu 4352 数位dp + 状态压缩

    XHXJ's LIS Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  4. HDU 4336 Card Collector (期望DP+状态压缩 或者 状态压缩+容斥)

    题意:有N(1<=N<=20)张卡片,每包中含有这些卡片的概率,每包至多一张卡片,可能没有卡片.求需要买多少包才能拿到所以的N张卡片,求次数的期望. 析:期望DP,是很容易看出来的,然后由 ...

  5. hdu_4352_XHXJ's LIS(数位DP+状态压缩)

    题目连接:hdu_4352_XHXJ's LIS 题意:这题花大篇篇幅来介绍电子科大的一个传奇学姐,最后几句话才是题意,这题意思就是给你一个LL范围内的区间,问你在这个区间内最长递增子序列长度恰为K的 ...

  6. hdu 5724 SG+状态压缩

    Chess Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submi ...

  7. 【bzoj1076】[SCOI2008]奖励关 期望dp+状态压缩dp

    题目描述 你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关.在这个奖励关里,系统将依次随机抛出k次宝物,每次你都可以选择吃或者不吃(必须在抛出下一个宝物之前做出选择,且现在决定不吃的宝物以后也不能再 ...

  8. hdu4336 Card Collector(概率DP,状态压缩)

    In your childhood, do you crazy for collecting the beautiful cards in the snacks? They said that, fo ...

  9. dp状态压缩

    dp状态压缩 动态规划本来就很抽象,状态的设定和状态的转移都不好把握,而状态压缩的动态规划解决的就是那种状态很多,不容易用一般的方法表示的动态规划问题,这个就更加的难于把握了.难点在于以下几个方面:状 ...

随机推荐

  1. 一个Silverlight工程的各文件解析

    创建一个解决方案,这个解决方案包括一个ASP.NET网站项目和一个Silverlight应用程序项目. 1)ASP.net项目: -------------Default.aspx:ASP.net默认 ...

  2. Linux下的解压命令

    Linux下常见的压缩包格式有5种:zip tar.gz tar.bz2 tar.xz tar.Z 其中tar是种打包格式,gz和bz2等后缀才是指代压缩方式:gzip和bzip2 filename. ...

  3. write命令帮助文档(ubuntu 18.04)

    WRITE() BSD General Commands Manual WRITE() NAME write — send a message to another user SYNOPSIS wri ...

  4. 20155324 2016-2017-2 《Java程序设计》第9周学习总结

    20155324 2016-2017-2 <Java程序设计>第9周学习总结 教材学习内容总结 学习目标 了解JDBC架构 掌握JDBC架构 掌握反射与ClassLoader 了解自定义泛 ...

  5. pyqt5-控件的显示与隐藏

    只有父控件显示,子控件才能显示 setVisible(bool)      设置控件是否可见 button.setVisible(True)     True 可见 setHidden(bool)  ...

  6. Coursera Deep Learning 2 Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization - week3, Hyperparameter tuning, Batch Normalization and Programming Frameworks

    Tuning process 下图中的需要tune的parameter的先后顺序, 红色>黄色>紫色,其他基本不会tune. 先讲到怎么选hyperparameter, 需要随机选取(sa ...

  7. 第25月第3天 Mxshop项目记录01

    1.项目 https://github.com/mtianyan/VueDjangoFrameWorkShop virtualenv命令 virtualenv . virtualenv -p /ana ...

  8. steps/train_mono.sh

    <<单音素HMM的训练流程图.vsdx>> 定义拓扑结构.参数初始化 $ gmm-init-mono --shared-phones=$lang/phones/sets.int ...

  9. shell实现带颜色输出的进度条

    1.基础版 #!/bin/bash b='' ;$i<=;i+=)) do printf "执行进度 :[%-50s]%d%%\r" $b $i sleep 0.001 b= ...

  10. git操作远程仓库

    1.在本地电脑的上生成ssh-key ssh-keygen -t rsa -C "youremail@126.com" 可以在用户主目录里找到.ssh目录,里面有id_rsa和id ...