HDU1074 状压dp

江科大笔记—OLED调试工具 OLED介绍及调试工具 阅读详情

Problem Description

Ignatius has just come back school from the 30th ACM/ICPC. Now he has a lot of homework to do. Every teacher gives him a deadline of handing in the homework. If Ignatius hands in the homework after the deadline, the teacher will reduce his score of the final test, 1 day for 1 point. And as you know, doing homework always takes a long time. So Ignatius wants you to help him to arrange the order of doing homework to minimize the reduced score.

Input

The input contains several test cases. The first line of the input is a single integer T which is the number of test cases. T test cases follow.
Each test case start with a positive integer N(1<=N<=15) which indicate the number of homework. Then N lines follow. Each line contains a string S(the subject’s name, each string will at most has 100 characters) and two integers D(the deadline of the subject), C(how many days will it take Ignatius to finish this subject’s homework).

Note: All the subject names are given in the alphabet increasing order. So you may process the problem much easier.

Output

For each test case, you should output the smallest total reduced score, then give out the order of the subjects, one subject in a line. If there are more than one orders, you should output the alphabet smallest one.

Sample Input

2
3
Computer 3 3
English 20 1
Math 3 2
3
Computer 3 3
English 6 3
Math 6 3

Sample Output

2
Computer
Math
English
3
Computer
English
Math

Hint

In the second test case, both Computer->English->Math and Computer->Math->English leads to reduce 3 points, but the
word “English” appears earlier than the word “Math”, so we choose the first order. That is so-called alphabet order.

这个题真是浪费我好久好久…
在dp入门的专题里做到这个第一波我都不明白这是个什么东西
直到第二波回头看的时候才懂了…

所谓状态压缩dp怎么说呢我觉得特征有那么几个
第一个就是不确定的维度
因为维度的不确定所以用了二进制来表示…
第二个就是数据量一般都不大…
他没法大
空间复杂度2^n这个分分钟爆炸

知道他是状压dp了以后剩下的好办不少…
从1一直到2^n这么多种状态,每个状态都是所有种物品的不同形态
这时候要看仔细了,每一个物品的状态变化到底都和谁有关
和谁有关就转移缺了谁的状态….

这个状态怎么找…还是用1<

#include<iostream>
#include<memory.h>
#include<string>
#include<cstdio>
#include<stack>
using namespace std;
struct p
{
    string n;
    int jieshu, hua;
};
struct q
{
    int qian, xian, time, fen;
};
p zhi[17];
q dp[1<<15];
int main()
{
    int T;
    cin >> T;
    while (T--)
    {
        int n;
        cin >> n;
        for (int a = 0;a < n;a++)cin >> zhi[a].n >> zhi[a].jieshu >> zhi[a].hua;
        int quanbu = 1 << n ;
        memset(dp, 0, sizeof(dp));
        for (int qingk = 1;qingk < quanbu;qingk++)
        {
            dp[qingk].fen = 1<<30;
            for (int a = n - 1;a >= 0;a--)
            {
                int t = 1 << a;
                if (t&qingk)
                {
                    int qian = qingk - t;
                    int benci = zhi[a].hua + dp[qian].time - zhi[a].jieshu;
                    if (benci < 0)benci = 0;
                    if (benci + dp[qian].fen < dp[qingk].fen)
                    {
                        dp[qingk].fen = benci + dp[qian].fen;
                        dp[qingk].xian = a;
                        dp[qingk].qian = qian;
                        dp[qingk].time = dp[qian].time + zhi[a].hua;
                    }
                }
            }
        }
        stack<int>ww;
        int tem = quanbu - 1;
        while (tem)
        {
            ww.push(dp[tem].xian);
            tem = dp[tem].qian;
        }
        cout << dp[quanbu-1].fen << endl;
        while (!ww.empty())
        {
            cout << zhi[ww.top()].n << endl;
            ww.pop();
        }
    }
    return 0;
}
SAP OBYC自动过账全解析:从BSX到WRX的会计科目配置指南 本文深入解析SAP OBYC自动过账功能,从BSX到WRX的会计科目配置全流程,涵盖评估分组代码、事务码和评估类等核心概念。通过实战案例展示如何实现库存变动到财务过账的自动化流转,提升企业财务数据的准确性和效率。 阅读详情

相关推荐

Ubuntu Server 22.04.5系统安装教程

该教程主要是演示在服务器上安装Ubuntu server 22.04系统的详细步骤,主要包含,安装系统前的准备(镜像的下载,启动盘的制作),安装系统时的语言选择,网络设置,切换镜像源(可根据实际需求来配置,本文使用清华镜像源),手动分区,用户设置,ssh服务安装等。以上就是关于Ubuntu Server 22.04系统安装的详细过程。

逆水行舟,不进则退。 7761

Doing Homework (状压dp hdu1074)

hdu 1074题目链接如上。题意是学生要完成作业,给出了n门课程,每门课程都有截止时间D和需要花费的时间C,如果一门课程超时一天就会扣一分。现在求一个最优安排,使得扣分最少,并且输出做作业的次序,如果同一扣分量有多种排序,要选择最符合字典序的优先级的。输入时已经按照字典序来给出课程。这道题目给的数据量很小,n的范围最大到15,我们可以从这个方面来推断它或许可以使用状压dp来解。并且还可以发现,当...

xuzonghao的博客 249

数字逻辑EduCoder课设项目 厨房计时器系统设计 Logisim实现

数字逻辑EduCoder课设项目 厨房计时器系统设计 Logisim实现

weixin_51693702的博客 1万+

【HDU 1074 Doing Homework】 状压DP

HDU1074 题意就是有n个科目要掌握,每种科目有一个开始时间和持续时间,求最少需要的时间 由于这个题n比较小,就是经典的状压DP,我们可以从小到大枚举所有状态,然后对每种状态保留能达到当前状态的最优解,再从小状态向大状态转移。由于这道题要输出保证字典序而且原题就是按照字典序给出的,所以我们可以倒着遍历,这样就保证了字典序。 HDU1074代码 #include&lt;stdio...

lajiyuan的博客 264

使用sklearn学习多项式回归(三)

1,什么是线性 我们无数次提到”线性“这个名词。在支持向量机中,我们也曾经提到最初的支持向量机只能够分割线性可分的数据,然后引入了”核函数“来帮助我们分类那些非线性可分的数据。我们也曾经说起过,比如说决策树,支持向量机是”非线性“模型。所有的这些概念,让我们对”线性“这个词非常熟悉,却又非常陌生——因为我们并不知道它的真实含义。接下来我们看看线性回归模型改进的核心之一:帮助线性回归解决非线性问题。 1.1,变量之间的线性关系 ”线性“这个词用于描述不同事物时有着不同的含义。我们最常使用的线性是指“变量

理科男同学 5100

机器视觉:9点标定的原理与实现

标定就是将机器视觉处理得到的像素坐标转换成实际项目中使用到的毫米坐标。简单说即使看看实际单位距离内有几个像素,如下图所示,10mm的距离内有222个像素,那像素坐标和实际的毫米坐标就有个比例关系了。

m0_49968063的博客 1万+

状压DP(例题:HDU1074)

状压DP:用到状压的DP。 什么是状压? 把一系列状态压缩成一个状态(通常用二进制)。   例题:HDU1074 Doing Homework Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 12604    Accepted...

Radium_1209 402

SiC MOSFET驱动设计实战:从特性解析到电路优化

本文深入解析SiC MOSFET的核心特性及其驱动电路设计要点,涵盖高温稳定性、快速开关能力等关键特性,并提供驱动电压配置、电流能力计算、布局优化等实用方案。特别针对第三代电力电子半导体SiC MOSFET的驱动要求,分享STGAP1AS等典型驱动方案的应用技巧,助力工程师解决高频应用中的EMI和热管理挑战。

weixin_29230865的博客 365

HDU - 1074 状压DP

HDU - 1074 状压DP Doing Homework 题目大意: 有一个人想完成n种作业,有n行,每行一个课程名称,课程提交截至时间,课程完成所需时间,现在以什么顺序完成所有作业所超时间最少和所超最少时间,且最少时间相同时字典序小的在前,给定数据的字典序是上升的。 数据范围: 1≤n≤...

TRDD的博客 89

Isograph工具解析:FTA、RBD、FMECA与ETA在可靠性工程中的实战应用

可靠性工程是确保复杂系统安全稳定运行的核心学科,它通过量化方法评估和提升系统在特定条件下的无故障运行能力。其基本原理涉及对系统失效模式、概率及影响进行建模与分析,旨在将定性的工程经验转化为定量的决策依据。在工程实践中,故障树分析(FTA)和可靠性框图(RBD)是两种互为补充的关键技术:FTA采用自上而下的演绎逻辑,追溯导致顶事件发生的所有可能故障组合;RBD则采用自下而上的归纳逻辑,描述系统成功运行所需的功能结构关系。这些分析技术的工程价值在于能够提前识别设计薄弱环节,量化风险,并指导设计优化与维修策略制定

weixin_42522009的博客 315

问答式AI vs 智能体(Agent):它们有什么不同?

你肯定用过 ChatGPT 或文心一言——问它一个问题,它给你一个答案。AI Agent(AI智能体)。很多人搞不清楚:它们不都是"AI"吗?有什么区别?这篇文章用一个最简单的类比,彻底讲清楚这两者的本质差异。框架特点适合人群AutoGPT完全自主执行任务,链式思考开发者MetaGPT模拟团队协作,多角色分工开发者LangChain最流行的Agent开发框架开发者Dify可视化无代码搭建Agent非技术用户Coze(扣子)字节跳动出品,国内最易用普通用户WorkBuddy。

Johnny2004的专栏 447

HDU 1074 Doing Homework(状压DP)

题目地址:HDU 1074 这题攒了好长时间了。。。一直没写。。 简单状压DP。这题比较特别的地方是dp需要用结构体数组。 详细的请看kuangbin大神的模板。。传送门 代码如下: #include #include #include #include #include #include #include #include #include #include #in

scf0920 1172

Vue - 快速入门,这一套就够了!(Vue core + 案例 + 效果演示)

前置条件:掌握 HTML、CSS、JavaScript、AJAX.工具:VsCode.插件:Live Server(浏览器实时预览)Ps:建议都提前下载下来,没网的时候也能用.

CYK_byte的博客 4万+

HDU1074【状压DP】

最多15个作业,如果全排列则共有15!种,但是这样会计算很多重复的值,用状压DP,遍历2^15,可以枚举所有作业的出现顺序,并且通过记录,可以进行递推。 初始状态是0,最后的状态是2^16-1(111111....)表示所有的作业都已经做过了。 #include #include #include #include #include using namespace std; #def

The Summer, The Winter 380

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

状压dp——HDU 1074

题目含义 给出一堆课的截止时间和完成需要的时间 每完成这门课的时间超过截止时间一天就扣一分 问怎么安排完成所有课扣掉的分最少 题目分析 可以看到课总共就不超过16个 假设有3门课,用111表示全部完成,000表示都没完成,于是这个题可以用状压dp完成 用dp[1]...dp[1<<n-1]表示n门课2^n种完成状态对应扣除的分数 用J=1<<(k-1),当...

weixin_30252709的博客 91

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

HDU 1074(状压dp)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1074   题目大意:给一堆作业的ddl和所需完成时间,如果超时就要多花1的代价,问最后最少需要花多少代价,并输出完成作业的顺序。   题目思路:状压dp,用连续15位表示作业完成情况,1为做了,0为没做,然后从1到(1&lt;&lt;n)-1,通过思考可以发现,多数字的情况出现时,比它少一个数...

smilestruggler_Fly To Higher 332

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

HDU 1074 Doing Homework 【状压DP】

题目来源:http://acm.hdu.edu.cn/showproblem.php?pid=1074 ★自己立的flag 非要选择学打牌 ,那么就从状压DP开始吧~ 题意: 给你n个作业(名字,提交截止日期,需要写的时间),每个作业超过预定时间提交,每多一天就要扣一分。问怎样安排写作业的顺序才能使扣的分最少,并按输出写的作业的顺序~ 思路: 首先看到n特别小,然后emmm,就是状压DP咯 其实...

HungTeen的博客 246

hdu 1074 Doing Homework 状压dp

题目:http://acm.hdu.edu.cn/showproblem.php?pid=1074 题意: 有n门课程作业,每门作业的截止时间为D,需要花费的时间为C,若作业不能按时完成,每超期1天扣1分。 这n门作业按课程的字典序先后输入 问完成这n门作业至少要扣多少分,并输出扣分最少的做作业顺序 PS:达到扣分最少的方案有多种,请输出字...

126

HDU 1074 Doing Homework (状压dp)

题意:有nnn门课,给出课的名称,ddl,所需时间,然后要让超出ddl的时间数之和最小。 题解:状压dp 用二进制枚举所有状态,再遍历当前状态的所有子状态(1),倒推过去取最大就可以。见代码注释。 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<string> #include<cstring&g...

gongyuandaye的博客 351

HDU 1074 Doing Homework 状压Dp

题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=68966#problem/D 题意:给定各个科目的截至时间和完成该科目所需要的时间,求最小逾期值。 刚开始拿到该题目,不知道思路,百度才反应过来,科目为15明显是状压Dp的标志嘛。。。。 然后终于写出来了。。。好费劲啊。。。太弱了。。 代码: #include

catch_catch的专栏 686

【状压dp】HDU 1074 Doing Homework

/* 状压dp D - Doing Homework 时间: 2017/02/20 题意:作业超过时限,超过一天扣一分,给出n个作业及其时限和需要完成的时间,求最小扣分值和其路径 题解: 状态压缩dp,本应该要想到的。其N<=15,所以每个状态状态转移最多15次。 因为题目要求最后方案如果多个情况以字典序排序,所以可以先将原数据先排序 然后我们发现递归时缺少了上一个状态的所用时间,我先预处理出来。

学无纸巾 378

HDU 1074 A - Doing Homework 【状压DP】

HDU1074链接   题意: 有n份作业需要做,每一份作业都有 一个截至时间和一个耗时(完成该作业需要的时间),每份作业每逾期一天就扣掉一分,要求完成所有作业并扣掉最少的学分, 并把完成作业的顺序输出出来! 分析:这题拖啦两天才写出来(状压专题第一题),开始状压理解较浅硬是没有思路,后来写啦几道题后,才想到思路。这题其实不难,用状压分数有点不好求,后来想到用一个数组记录当前状态已

tystrwor的博客 229

HDU-1074(状压DP)

Problem Description Ignatius has just come back school from the 30th ACM/ICPC. Now he has a lot of homework to do. Every teacher gives him a deadline of handing in the homework. If Ignatius hands in t...

qq_44641782的博客 323

dp训练计划——hdu1074状压dp入门题

题目链接:https://vjudge.net/problem/HDU-1074 题目大意: 给你n个作业的名字,截止时间,完成需要的时间,数据按照字典序大小给你 让你求出完成这个n个作业的最小延误时间(即超时时间),并输出字典序最小的安排顺序。 题解: 经典状压dp入门题,其实就是暴力枚举,只不过压缩一下用一个数表示全部的状态,然后暴力枚举所有状态,维护答案。 我们首先需要发...

mumei的博客 281

HDU - 1074 Doing Homework 状压DP

Ignatius has just come back school from the 30th ACM/ICPC. Now he has a lot of homework to do. Every teacher gives him a deadline of handing in the homework. If Ignatius hands in the homework after th...

Prince_NYing的博客 257
上一篇: POJ3666 离散化的dp
下一篇: HDU3001 三进制的状压dp
NineFailure
博客等级 码龄11年 22粉丝 317原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值