hdu1074
#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的更多相关文章
- 状态压缩-----HDU1074 Doing Homework
HDU1074 Doing Homework 题意:给了n个家庭作业,然后给了每个家庭作业的完成期限和花费的实践,如果完成时间超过了期限,那么就要扣除分数,然后让你找出一个最优方案使扣除的分数最少,当 ...
- 状态压缩 HDU1074
t组数据 n门课程 底限 完成要几天 dp[i] 表示i的二进制数中 1 对应位置课程 完成 最少扣多少分 完成的时间 记录一下怎么下来的 1->2^n 列举 (1<<n) ...
- hdu1074 Doing Homework
这题比较有意思,暴力搜索必然tle,可以用状态压缩dp解决. 我们先不考虑完成所有作业的扣分,而考虑其一个子集的情况. 假设我们得到了完成某子集S对应的作业最少扣分,我们试着向该子集中增加一个元素a, ...
- hdu1074 状压DP、栈实现记录路径
题意:给了几门学科作业.它们的截止提交期限(天数).它们的需要完成的时间(天数),每项作业在截止日期后每拖延一天扣一学分,算最少扣的学分和其完成顺序. 一开始做的时候,只是听说过状态压缩这个神奇的东西 ...
- hdu1074 Doing Homework(状态压缩DP Y=Y)
Doing Homework Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) T ...
- HDU-1074.DoingHomework(撞鸭dp二进制压缩版)
之前做过一道二进制压缩的题目,感觉也不是很难吧,但是由于见少识窄,这道题一看就知道是撞鸭dp,却总是无从下手....最后看了一眼博客,才顿悟,本次做这道题的作用知识让自己更多的认识二进制压缩,并无其它 ...
- HDU1074(KB12-D 状态压缩dp)
Doing Homework Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)To ...
- kuangbin专题十二 HDU1074 Doing Homework (状压dp)
Doing Homework Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)To ...
- HDU1074(状态压缩DP)
Doing Homework Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)To ...
随机推荐
- apache下配置多域名多目录的应用
引言:阿里云centos apache web服务器中配置不同域名访问不同的目录,达到类似增加虚拟主机的效果: 案例: 如有2个www.a.com ,www.b.com 域名, 访问www.a.com ...
- 让IE6支持max_height、max_width等等
推荐使用min-height:500px;_height:500px;来解决IE6不能max和min属性的问题.
- POJ 之2386 Lake Counting
Lake Counting Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 20003 Accepted: 10063 D ...
- Java -- AWT 画图,图像处理
1. AWT画图 Graphics类 提供绘制简单图形的方法 更新图片时用到 repaint , update , 程序不应该主动调用paint和update, 这两个方法都应该是由AWT系统负责 ...
- jsp的9个内置对象
Jsp提供了request.response.session.application.out.page.config.exception.pageContext9个内置对象. 1. Request R ...
- linux 压缩和归档
在linux下有几种压缩方式:gzip.bzip2.xz.zip gzip 压缩文件以.gz结尾, 只能压缩文件,不能压缩目录 用法: gzip:/path/to/somefile 用来压缩,完成 ...
- Logiscope学习网址
Logiscope测试机理 http://blog.csdn.net/cmy673986/article/details/9163247 http://www.cnitblog.com/qiuya ...
- Java微信小程序开发_00_资源帖
1.微信小程序开发:http://blog.csdn.net/column/details/13721.html?&page=1 2.微信小程序栏目:http://blog.csdn.net/ ...
- 201621123014《Java程序设计》第四周学习总结
1.本周学习总结 1.1 写出你认为本周学习中比较重要的知识点关键词 答:继承.多态.子类.父类.final.static.类型判断与类型转换.抽象类. 1.2 尝试使用思维导图将这些关键词组织起来. ...
- Uva 10820 Send a Table(欧拉函数)
对每个n,答案就是(phi[2]+phi[3]+...+phi[n])*2+1,简单的欧拉函数应用. #include<iostream> #include<cstdio> # ...