Doing Homework HDU - 1074

Doing Homework HDU - 1074

题意:

有n个任务,每个任务有一个截止时间,超过截止时间一天,要扣一个分。
求如何安排任务,使得扣的分数最少。
(1<=n<=15)

题解:

n很小,可以往状压dp方向去想
我们用i枚举所有的状态,然后对于第j个任务,tmp=i-(1<<j),tmp表示状态i在未完成j的前一个状态
tim[]表示当前状态所花费的时间,那么完成第j个任务所扣分数为score=tim[tmp]+cost[j]-dead[j],完成tmp所需时间+完成任务j所需时间-截止日期,超出多少扣多少分数
dp[i]表示i状态下的的最小扣分,dp[i]=min(dp[tmp]+score)
为了方便答案的输出,我们用pre[i]记录,最后一个完成状态i所办的任务,pre[i]=j,这样记录是为了之后方便输出,w=i-(1<<pre[i])就是在任务j之前的状态,然后依次寻找w-(1<<pre[w])
在循环任务j时,要从后向前找,因为题目所给的数据是字典序递增的,而我们最后的输出是根据pre倒着输出的,所以逆着寻找可以保证输出的字典序最小

代码:

我的代码不知道哪里错了,一直wa,先贴上网上的正代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<string>
#include<cstdlib>
#include<queue>
#include<set>
#include<map>
#include<stack>
#include<ctime>
#include<vector>
#define INF 0x3f3f3f3f
#define PI acos(-1.0)
#define N 15
#define MOD 10007
#define E 1e-6
#define LL long long
using namespace std;
char str[20][101];
int dp[1<<N],pre[1<<N],times[1<<N];
int dead[N],cost[N];
void print(int x){//递归输出作业顺序if(!x)return;print(x-(1<<pre[x]));printf("%s\n",str[pre[x]]);
}
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",&str[i],&dead[i],&cost[i]);memset(times,0,sizeof(times));memset(pre,0,sizeof(pre));for(int i=1;i<(1<<n);i++){//枚举所有状态dp[i]=INF;//初始化状态i的扣分for(int j=n-1;j>=0;j--){//从后向前找int temp1=1<<j;if(!(i&temp1))//状态i不存在作业j完成的情况continue;int temp2=i-temp1;//未完成作业j的状态int score=times[temp2]+cost[j]-dead[j];//计算扣分if(score<0)//最小扣分为0score=0;if(dp[i]>dp[temp2]+score){dp[i]=dp[temp2]+score;//记录最小扣分times[i]=times[temp2]+cost[j];//到达状态i所花费的时间pre[i]=j;//状态i的前驱}}}printf("%d\n",dp[(1<<n)-1]);print((1<<n)-1);}return 0;;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/317091.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【学习笔记】浅谈广义矩阵乘法——动态DP

文章目录广义矩阵乘法动态DP例题&#xff1a;洛谷4719以下内容是本人做题经验&#xff0c;如有雷同&#xff0c;纯属抄袭&#xff1b;如有不对&#xff0c;纯属不懂&#xff0c;还请指正 广义矩阵乘法 众所周知&#xff0c;矩阵满足乘法交换律&#xff0c;前一个矩阵的列必须…

我们为什么要搞长沙.NET技术社区?

某种意义上讲&#xff0c;长沙和中国大部分内地城市一样&#xff0c;都是互联网时代的灯下黑。没有真正意义上的互联网公司&#xff0c;例如最近发布的中国互联网企业一百强中没有一家湖南或者长沙的公司就是明证。然而长沙并非没有互联网人&#xff0c;在麓谷几十万计的IT 从业…

洛谷P5212:SubString(SAM、LCT)

解析 所谓SAM套LCT&#xff0c;真的就只是SAM套LCT。。。 考试写起来应该有亿点点恶心 每次在SAM节点修改的时候在LCT对应位置修改即可。 注意&#xff01; 克隆节点之前需要先splay一下把所有标记接收。 没了。 #include<bits/stdc.h> using namespace std; #define…

在ASP.NET Core中使用EPPlus导入出Excel文件

这篇文章说明了如何使用EPPlus在ASP.NET Core中导入和导出.xls/.xlsx文件&#xff08;Excel&#xff09;。在考虑使用.NET处理excel时&#xff0c;我们总是寻找第三方库或组件。使用Open Office Xml格式&#xff08;xlsx&#xff09;读取和写入Excel 2007/2010文件的最流行的.n…

[kuangbin]专题12 基础DP

HDU 1024 Max Sum Plus Plus HDU 1029 Ignatius and the Princess IV HDU 1069 Monkey and Banana HDU 1074 Doing Homework HDU 1087 Super Jumping! Jumping! Jumping! HDU 1114 Piggy-Bank HDU 1176 免费馅饼 HDU 1260 Tickets HDU 1257 最少拦截系统 HDU 1160 FatMouse’s …

[2021-09-11 CQBZ/HSZX多校联考 T1] 茅山道术 (后缀和优化dp)

茅山道术descriptionsolutioncodedescription 题目描述 小七擅长茅山道术&#xff0c;有一天他发现了 n 个排成一行的宝石&#xff0c;其中第 i 个宝石 有一个颜色 ci 。 小七决定用茅山道术替换一些宝石&#xff0c;具体地&#xff0c;他每次施法可以选定两个满足 cl cr 的正…

洛谷P1484:种树(反悔贪心)

解析 反悔贪心好题。 我放弃wqs二分做法好吧。 要加强从边界和特殊情况入手思考问题的思想。 考虑选一个的时候&#xff0c;肯定是选最大值。 此时它两侧的值就不能选了。 那如果我后来不选这个最大值了&#xff0c;必然是我转而把它两侧的值都给选了&#xff0c;额外消耗一…

月旦评 之 DevOps招贤令2019 - 没有人比我们更懂DevOps

公元164-182年间&#xff0c;汝南平舆的许氏兄弟于每月初一品评人物&#xff0c;褒贬时政&#xff0c;被称为“月旦评”。所谓“子治世之能臣&#xff0c;乱世之奸雄也”这句许邵评价曹操的话也是来自于“月旦评”&#xff1b;时间一下子来到了2019年&#xff0c;DevOps招贤令再…

HDU - 2204 Eddy‘s爱好(尚未完全解决)

HDU - 2204 Eddy’s爱好 题意&#xff1a; 给你一个正整数N&#xff0c;确定在1到N之间有多少个可以表示成M^K&#xff08;K>1)的数 题解&#xff1a; 参考题解&#xff1a; 我们先举例找找规律 1~10以内2的次方有多少个&#xff1f;有121,224,329,一共三个&#xff0c;…

[2020-09-11 CQBZ/HSZX多校联测 T2] 泰拳警告(组合数+数学期望)

泰拳警告descriptionsolutioncodedescription 题目描述 小七擅长泰拳&#xff0c;某天他打算与小枣切磋拳技&#xff0c;一共需要进行 n 次比赛。 由于双方拳技难分上下&#xff0c;每场比赛小七获胜或落败的概率都是 1/p2 &#xff0c;平局的概率是 p/p2 若最后小七获胜场数大…

模板:wqs二分

所谓wqs&#xff0c;就是windwhisper说&#xff1a;“qs” &#xff08;逃&#xff09; 解析 很神奇的科技。 四两拨千斤的解决一些本来可能不太好解决的问题。 经典模型&#xff1a;有若干个物品&#xff0c;要求选出 mmm 个&#xff0c;选的时候带有限制&#xff0c;求最优…

EF Core中避免贫血模型的三种行之有效的方法(翻译)

[Paul Hiles: 3 ways to avoid an anemic domain model in EF Core &#xff1a;https://www.devtrends.co.uk/blog/3-ways-to-avoid-an-anemic-domain-model-in-ef-core]1.引言在使用ORM中&#xff08;比如Entity Framework&#xff09;贫血领域模型十分常见 。本篇文章将先探…

[ONTAK2010] Peaks加强版 (kruskal重构树+主席树+倍增)

Peaksdescriptionsolutioncodedescription 在Bytemountains有N座山峰&#xff0c;每座山峰有他的高度h_i 有些山峰之间有双向道路相连&#xff0c;共M条路径&#xff0c;每条路径有一个困难值&#xff0c;这个值越大表示越难走 现在有Q组询问&#xff0c;每组询问询问从点v开…

洛谷P2754:[CTSC1999]家园 / 星际转移问题(网络流)

解析 容易想到对每个时间的空间站都建一个点。 然后发现循环问题很难搞。 然后我就一直想从 lcm 下文章&#xff0c;结果 lcm 可以到3e5&#xff0c;于是就寄了… qwq 注意到本题的数据范围极小&#xff01; 那个3e5云云是不可能跑出来的&#xff0c;事实上&#xff0c;答案不…

Saving Beans HDU - 3037(卢卡斯定理)

Saving Beans HDU - 3037&#xff08;卢卡斯定理&#xff09; 题意&#xff1a; 他们想知道有多少种方法可以在n树中保存不超过m个bean&#xff08;它们是相同的&#xff09;。 现在他们求助于你&#xff0c;你应该给他们答案。 结果可能非常巨大; 你应该输出模p的结果&…

我们为什么要搞长沙.NET技术社区(三)

我们为什么要搞长沙.NET技术社区&#xff08;三&#xff09; 小饭局搞事情先从饭局开始是中华民族的优良传统。昨天晚餐时间&#xff0c;长沙 .net 技术社区的主要发起人员进行了一番小聚&#xff0c;同时也作为一个非正式会议&#xff0c;对社区发展进行了探讨。从介绍自己对于…

BZOJ4504. K个串(主席树+优先队列)

4504. K个串descriptionsolutioncodedescription 兔子们在玩k个串的游戏。首先&#xff0c;它们拿出了一个长度为n的数字序列&#xff0c;选出其中的一 个连续子串&#xff0c;然后统计其子串中所有数字之和&#xff08;注意这里重复出现的数字只被统计一次&#xff09;。 兔…

【招聘(北京)】北森测评招聘 .NET 架构师、高级工程师

工作职责公司核心产品的迭代需求分析设计开发。公司核心产品的线上维护和性能调优。对初中级技术人员培养和质量把关。编写软件设计和技术文档。任职资格为人正直、诚信、责任心强&#xff0c;能承受较大工作压力。强烈的目标导向意识&#xff0c;逻辑思维清晰&#xff0c;执行…

网络流模型与技巧总结

文章目录前言常见基本模型最大匹配、最小点覆盖和最大独立集构造最小点覆盖最大点权匹配最小路径覆盖不可重覆盖可重覆盖最大权闭合子图建图技巧利用拆点进行限流利用断边表示决策利用虚点表示组合关系链状模型用链表示时间轴用链表示偏序关系形式的选取限制通过拆点描述先后顺…

卢卡斯定理 Lucas

参考文章 详细定义内容看这个参考文章 结论&#xff1a; 模板&#xff1a; Lucas函数&#xff1a; long long Lucas(long long n,long long m){if(m0) return 1;return Lucas(n/p,m/p)*C(n%p,m%p)%p; }组合数函数&#xff1a; 此处求逆元的用的bp-2 long long C(long long…