【算法系列学习】状压dp [kuangbin带你飞]专题十二 基础DP1 D - Doing Homework
https://vjudge.net/contest/68966#problem/D
http://blog.csdn.net/u010489389/article/details/19218795
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<cmath>
#include<queue>
#define INF 0x3f3f3f3f
using namespace std;
const int maxn=;
int n;
struct hmwk
{
char ch[maxn];
int d;
int c;
}p[]; struct DP
{
int time;
int reduced;
int fa;
}dp[(<<)]; char s[][]; void Init()
{
for(int i=;i<(<<);i++)
{
dp[i].fa=-;
dp[i].time=;
dp[i].reduced=INF;
}
dp[].reduced=; }
//按字典序增序输出
bool cmp(const hmwk&x,const hmwk& y)
{
return strcmp(x.ch,y.ch)<=;
}
//递归输出,x为当前,fa为前一个
void Print(int x,int fa)
{
int flag;
if(x==)
{
for(int i=;i<n;i++)
{
if(fa&(<<i))
{
flag=i;
break;
}
}
printf("%s\n",p[flag].ch);
return;
}
Print(dp[x].fa,x);
for(int i=;i<n;i++)
{
if((x&(<<i))!=(fa&(<<i)))
{
flag=i;
break;
}
}
if(x==)
{
printf("%s\n",p[flag].ch);
}
else
{
printf("%s\n",p[flag].ch);
}
} int main()
{
int T;
scanf("%d",&T);
while(T--)
{ scanf("%d",&n);
for(int i=;i<n;i++)
{
scanf("%s%d%d",p[i].ch,&p[i].d,&p[i].c);
}
sort(p,p+n,cmp);
Init();
//每个i代表一个状态,i的每一位代表一个科目
for(int i=;i<(<<n);i++)
{
for(int k=;k<n;k++)
{
//如果是1跳过
if(i&(<<k))
{
continue;
}
//now为转移后的状态
int now=i+(<<k);
dp[now].time=dp[i].time+p[k].c;
//dp[now].time-p[k].d<0说明没有延期,就是0
if(dp[i].reduced+max(,dp[now].time-p[k].d)<dp[now].reduced)
{
dp[now].reduced=dp[i].reduced+max(,dp[now].time-p[k].d);
dp[now].fa=i;
}
}
}
//最终结果就是111111(n个1),对应的数就是(1<<n)-1
printf("%d\n",dp[(<<n)-].reduced);
Print(dp[(<<n)-].fa,(<<n)-);
}
return ;
}
【算法系列学习】状压dp [kuangbin带你飞]专题十二 基础DP1 D - Doing Homework的更多相关文章
- 【算法系列学习】DP和滚动数组 [kuangbin带你飞]专题十二 基础DP1 A - Max Sum Plus Plus
A - Max Sum Plus Plus https://vjudge.net/contest/68966#problem/A http://www.cnblogs.com/kuangbin/arc ...
- 【算法系列学习】[kuangbin带你飞]专题十二 基础DP1 C - Monkey and Banana
https://vjudge.net/contest/68966#problem/C [参考]http://blog.csdn.net/qinmusiyan/article/details/79862 ...
- 【算法系列学习】[kuangbin带你飞]专题十二 基础DP1 G - 免费馅饼
https://vjudge.net/contest/68966#problem/G 正解一: http://www.clanfei.com/2012/04/646.html #include< ...
- 【算法系列学习】[kuangbin带你飞]专题十二 基础DP1 F - Piggy-Bank 【完全背包问题】
https://vjudge.net/contest/68966#problem/F http://blog.csdn.net/libin56842/article/details/9048173 # ...
- 【算法系列学习】[kuangbin带你飞]专题十二 基础DP1 E - Super Jumping! Jumping! Jumping!
https://vjudge.net/contest/68966#problem/E http://blog.csdn.net/to_be_better/article/details/5056334 ...
- 【算法系列学习】[kuangbin带你飞]专题十二 基础DP1 B - Ignatius and the Princess IV
http://www.cnblogs.com/joeylee97/p/6616039.html 引入一个cnt,输入元素与上一个元素相同,cnt增加,否则cnt减少,当cnt为零时记录输入元素,因为所 ...
- [kuangbin带你飞]专题十二 基础DP1
ID Origin Title 167 / 465 Problem A HDU 1024 Max Sum Plus Plus 234 / 372 Problem B HDU 1 ...
- [ An Ac a Day ^_^ ] [kuangbin带你飞]专题十二 HDU 1176 免费馅饼
题意: 中文题意不解释…… 思路: 先把x,T存到矩阵里 然后像数塔一样从最底层走一边就行了 dp[i][j]代表在时间为j时 第i个位置最多能吃到多少个馅饼 最后输出第0时刻的5位置的馅饼数量就好了 ...
- [kuangbin带你飞]专题十五 数位DP
ID Origin Title 62 / 175 Problem A CodeForces 55D Beautiful numbers 30 / 84 Problem B HD ...
随机推荐
- 2017-3-18 SQL server 数据库 45道题
use data02161212 create table student (Sno nvarchar(3) primary key, Sname nvarchar(8) not null, Ssex ...
- JDBC(下)
1. 预编译sql处理(防止sql注入) -- 创建数据库 CREATE DATABASE jdbc_demo DEFAULT CHARACTER SET utf8;i -- 创建表 USE jdbc ...
- PHP生成随机水印图片
基于PHP的GD图形库,自己生成一张图片.仅限初识GD库,实例学习. 一.需求 网站的布局用到了类似慕课网课程列表的风格,每一个课程是一个banner图,图下面是标题加简介.因为课程的数量较大没有为所 ...
- iOS开发之UINavigationController
1.概述: 利用UINavigationController,可以轻松地管理多个控制器,轻松完成控制器之间的切换,典型例子就是系统自带的“设置”应用. 2.UINavigationController ...
- Python注释用法
在Python中的注释与其他语言相比有很大的不同,但使用起来也很简单.在Python中有两种注释,一种是单行注释,一种是多行注释.单行注释适用于简短快速的注释(或者用于调试),而块注释常用于描述一段内 ...
- ZooKeeper集群-搭建指南
第一步: 上传安装程序到Linux 这一步很简单就不在这过多说明了! 第二步: 在Linux上使用命令行安装 第三步: 修改配置文件 1.修改zoo.cfg文件 2.修改集群中各台主机的名称 1).如 ...
- git 入门宝典
本篇教程是按照我自己的组织方式,然后从多篇教程中拼凑出来的,嘎嘎~,真佩服自己的技术! 原本想叫 git 宝典的,结果一查git的命令大全,还有那么多的git命令与功能没有接触到,所以...还是谦虚一 ...
- PRINCE2 有级别吗?
PRINCE2是分级别的,有基础级和专业级两个级别 Foundation基础级考试没有报考条件限制, 完全根据学员掌握知识的能力和实际工作经验 Practitioner 专业级考试不可越级 1.持有P ...
- 使用TagHelper完成分页步骤
使用TagHelper完成分页步骤 转载 2016-08-23 11:37:33 1 创建一个MyPageOpion类,用来存储分页信息,比如当前页,栏目总数,页面大小,跳转地址(RouteUrl)等 ...
- as3 操作图片,获取,设置实际像素,扣除透明区域
private var a:Loader = new Loader(); private function test():void { a.load(new URLRequest("asse ...