hdu_1074_Doing Homework(状压DP)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1074
题意:给你n个课程(n<=15)每个课程有限制的期限和完成该课程的时间,如果超出时间,每超一天扣一分,问完成全部课程,最少会扣多少分。
题解:典型的状压DP
#include<cstdio>
#define FFC(i,a,b) for(int i=a;i<=b;++i) int T,n,end,inf=1e9,cur,now,nowd,nowc,v[];
struct dt{char nm[];int d,c;}ta[];
struct dtt{int mi,pre,d;}dp[<<];//mi表示最小扣分,pre表示上一种状态,d表示当前时间 void out(int now){//递归输出结果
if(dp[now].pre==-)return;
out(dp[now].pre);
FFC(i,,n-){
int cur=<<i;
if((now&cur)&&!v[i+])printf("%s\n",ta[i+].nm),v[i+]=;
}
} int main(){
scanf("%d",&T);
while(T--){
scanf("%d",&n),end=(<<n)-,dp[].pre=-,dp[].d=,dp[].mi=;
FFC(i,,n)scanf("%s%d%d",ta[i].nm,&ta[i].d,&ta[i].c),v[i]=;
FFC(i,,(<<n)-)dp[i].mi=inf;
FFC(i,,end)FFC(j,,n-){
if(((cur=<<j)&i)==){//如果没完成,则完成这个作业
now=cur|i,nowd=dp[i].d+ta[j+].c;
nowc=nowd-ta[j+].d,nowc=nowc<=?:nowc;
if(dp[now].mi>dp[i].mi+nowc)
dp[now].mi=dp[i].mi+nowc,dp[now].pre=i,dp[now].d=nowd;
}
}
printf("%d\n",dp[end].mi);
out(end);
}
return ;
}
hdu_1074_Doing Homework(状压DP)的更多相关文章
- HDU 1074 Doing Homework 状压dp(第一道入门题)
Doing Homework Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)To ...
- HDU1074 Doing Homework —— 状压DP
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=1074 Doing Homework Time Limit: 2000/1000 MS (J ...
- HDU 1074 Doing Homework (状压DP)
Doing Homework Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)To ...
- HDU 1074 Doing Homework 状压DP
由于数据量较小,直接二进制模拟全排列过程,进行DP,思路由kuangbin blog得到,膜拜斌神 #include<iostream> #include<cstdio> #i ...
- HDU 1074 Doing Homework【状压DP】
Doing Homework Problem Description Ignatius has just come back school from the 30th ACM/ICPC. Now he ...
- Doing Homework HDU - 1074 (状压dp)
Ignatius has just come back school from the 30th ACM/ICPC. Now he has a lot of homework to do. Every ...
- kuangbin专题十二 HDU1074 Doing Homework (状压dp)
Doing Homework Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)To ...
- HDU 1074:Doing Homework(状压DP)
http://acm.hdu.edu.cn/showproblem.php?pid=1074 Doing Homework Problem Description Ignatius has just ...
- HDU1074:Doing Homework(状压DP)
Doing Homework Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)To ...
随机推荐
- Angular this vs $scope $event事件系统
this vs $scope ------------------------------------------------------------------------------ 'this' ...
- css的三种引入方式、常用的元素选择器以及css三大特性
第一.html文件中如何使用css html文件中使用css有3种方式:链接式.嵌入式.行内式,推荐使用程度依次递减:1.链接式:在html文件通过<link />标签引入,rel属性值必 ...
- js变量,语句
- 8VC Venture Cup 2017 - Elimination Round
传送门:http://codeforces.com/contest/755 A题题意是给你一个数字n,让你找到一个数字m,使得n*m+1为合数,范围比较小,直接线性筛出1e6的质数,然后暴力枚举一下就 ...
- 通过jvisualvm查看JVM的状态
安装了JDK之后,可以通过jvisualvm 命令进行性能分析
- 安卓Activity、service是否处于同一进程
Activity与Service是否处于同一进程? 1)默认情况下(不写android:process的时候),此时同一个应用程序的所有组建位于同一进程里,Activity与service也处于同 ...
- 转:apache 的mod-status
最近发现在apache的监控方面,apache 2开始自带的apache mod-status其实是个不错的工具,下面摘录并笔记之: 如果是linux的话,可以这样设置: 在httpd.conf中添加 ...
- 两端对齐布局与text-align:justify
百分比实现 首先最简单的是使用百分比实现,如下一个展示列表: <!DOCTYPE html> <html> <head> <meta charset=&quo ...
- POJ 1922 Ride to School#贪心
(- ̄▽ ̄)-* //C跟着a君骑,然后更快的b君来了,C又跟着b君骑, //接着最快的d君来了,C就去跟着d君了, //最后最快的d君到达目的地时,C也就到了 //所以C的到达时间,就是最早到达的那 ...
- BZOJ2141: 排队
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2141 分块加树状数组. 离散化之后,每一个块建一个树状数组.交换x,y,与x左边的数和y右 ...