#include <iostream>
#include <string>
#include <cstring>
#include <stack>
#include <algorithm>
using namespace std;

const int inf = 1<<30;

struct node
{
string name;
int dead,cost;
} a[50];

struct kode
{
int time,score,pre,now;
} dp[1<<15];

int main()
{
int t,i,j,s,n,end;
cin >> t;
while(t--)
{
memset(dp,0,sizeof(dp));
cin >> n;
for(i = 0; i<n; i++)
cin >> a[i].name >> a[i].dead >> a[i].cost;
end = 1<<n;
for(s = 1; s<end; s++)
{
dp[s].score = inf;
for(i = n-1; i>=0; i--)
{
int tem = 1<<i;
if(s & tem)
{
int past = s-tem;
int st = dp[past].time+a[i].cost-a[i].dead;
if(st<0)
st = 0;
if(st+dp[past].score<dp[s].score)
{
dp[s].score = st+dp[past].score;
dp[s].now = i;
dp[s].pre = past;
dp[s].time = dp[past].time+a[i].cost;
}
}
}
}
stack<int> S;
int tem = end-1;
cout << dp[tem].score << endl;
while(tem)
{
S.push(dp[tem].now);
tem = dp[tem].pre;
}
while(!S.empty())
{
cout << a[S.top()].name << endl;
S.pop();
}
}

return 0;
}

hdu1074的更多相关文章

  1. 状态压缩-----HDU1074 Doing Homework

    HDU1074 Doing Homework 题意:给了n个家庭作业,然后给了每个家庭作业的完成期限和花费的实践,如果完成时间超过了期限,那么就要扣除分数,然后让你找出一个最优方案使扣除的分数最少,当 ...

  2. 状态压缩 HDU1074

    t组数据 n门课程 底限 完成要几天 dp[i] 表示i的二进制数中  1 对应位置课程 完成  最少扣多少分 完成的时间 记录一下怎么下来的 1->2^n 列举 (1<<n)   ...

  3. hdu1074 Doing Homework

    这题比较有意思,暴力搜索必然tle,可以用状态压缩dp解决. 我们先不考虑完成所有作业的扣分,而考虑其一个子集的情况. 假设我们得到了完成某子集S对应的作业最少扣分,我们试着向该子集中增加一个元素a, ...

  4. hdu1074 状压DP、栈实现记录路径

    题意:给了几门学科作业.它们的截止提交期限(天数).它们的需要完成的时间(天数),每项作业在截止日期后每拖延一天扣一学分,算最少扣的学分和其完成顺序. 一开始做的时候,只是听说过状态压缩这个神奇的东西 ...

  5. hdu1074 Doing Homework(状态压缩DP Y=Y)

    Doing Homework Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) T ...

  6. HDU-1074.DoingHomework(撞鸭dp二进制压缩版)

    之前做过一道二进制压缩的题目,感觉也不是很难吧,但是由于见少识窄,这道题一看就知道是撞鸭dp,却总是无从下手....最后看了一眼博客,才顿悟,本次做这道题的作用知识让自己更多的认识二进制压缩,并无其它 ...

  7. HDU1074(KB12-D 状态压缩dp)

    Doing Homework Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)To ...

  8. kuangbin专题十二 HDU1074 Doing Homework (状压dp)

    Doing Homework Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)To ...

  9. HDU1074(状态压缩DP)

    Doing Homework Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)To ...

随机推荐

  1. [java]Arrays.copyOf() VS System.arrayCopy()

    If we want to copy an array, we can use either System.arraycopy() or Arrays.copyOf(). In this post, ...

  2. keeplive使用

    一.简介 Keepalived是一个免费开源的,用C编写的类似于layer3, 4 & 7交换机制软件,具备我们平时说的第3层.第4层和第7层交换机的功能.主要提供loadbalancing( ...

  3. php执行外部命令函数:exec()、passthru()、system()、shell_exec()对比

    PHP提供了4种方法执行系统外部命令:exec().passthru().system().shell_exec(),下面分别介绍: 1.exec 原型:string exec ( string $c ...

  4. MAC下ssh免密码登录远程服务器

    生成密钥.在终端下执行命令: ssh-keygen -t rsa 一路回车,各种提示按默认不要改,等待执行完毕.然后执行: ls ~/.ssh #可以看到两个密钥文件:id_rsa(私钥) id_rs ...

  5. 算法(Algorithms)第4版 练习 1.3.37

    package com.qiusongde.creative; import com.qiusongde.Queue; import edu.princeton.cs.algs4.StdOut; pu ...

  6. mysql多位小数字段用decimal类型

    转自http://database.51cto.com/art/201005/201651.htm

  7. Java_总结_00_资源贴

    1.Java程序员从笨鸟到菜鸟 (http://blog.csdn.net/column/details/java.html) 2. java进阶开发(http://blog.csdn.net/col ...

  8. php各种验证类

    <?php /**  * 验证类  *  */ class VerifyAction{     /**      * 是否为空值      */       public static func ...

  9. mysql du-master配置

    db-server1 my.cnf log_bin = mysql-binbinlog_format = mixedserver_id = 1 read-only = 0#binlog-do-db = ...

  10. JWT(JSON WEB TOKEN) / oauth2 / SSL

    1: JWT: 为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景.JWT的声明一般被 ...