hdu 1074 Doing Homework
来源:互联网 发布:mac svn 版本管理工具 编辑:程序博客网 时间:2024/05/09 03:56
http://acm.hdu.edu.cn/showproblem.php?pid=1074
状态压缩DP 的模板题
学习了一下状态压缩DP
这里处理字典序的方法 有排序,貌似排序的还简单一些
我用的指针
signp指向上一个状态,p指向状态对应取的字符串
代码:
#include <stdio.h>#include <stdlib.h>#include <math.h>#include <string.h>#include <iostream>#include <algorithm>#include <map>#include <set>#include <queue>using namespace std;const int inf=1000000000;struct node{ char word[105]; int deadline; int cost;}num[20];struct knode{ int score; int signp; int p; int cost;}dp[1<<16];void dfs(int n){ if(n==0) return; dfs(dp[n].signp); puts(num[dp[n].p].word);}int main(){ int T; int n; scanf("%d",&T); while(T--) { scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%s%d%d",num[i].word,&num[i].deadline,&num[i].cost); dp[0].cost=0; dp[0].score=0; for(int i=1;i<(1<<n);i++) { dp[i].score=inf; for(int j=1;j<=n;j++) { int m=1<<(j-1); if(m&i) { int k=i-m; int score=num[j].cost-(num[j].deadline-dp[k].cost); if(score<0) score=0; if(score+dp[k].score<dp[i].score) { dp[i].cost=dp[k].cost+num[j].cost; dp[i].score=score+dp[k].score; dp[i].signp=k; dp[i].p=j; } else if(score+dp[k].score==dp[i].score&&strcmp(num[dp[i].p].word,num[j].word)<0) { dp[i].cost=dp[k].cost+num[j].cost; dp[i].score=score+dp[k].score; dp[i].signp=k; dp[i].p=j; } } } } printf("%d\n",dp[(1<<n)-1].score); dfs((1<<n)-1); }}
- HDU 1074 Doing Homework
- hdu 1074 Doing Homework
- HDU-1074-Doing Homework
- hdu 1074 Doing Homework
- hdu 1074 Doing Homework
- hdu-1074-Doing Homework
- HDU - 1074 Doing Homework
- HDU 1074 Doing Homework
- HDU 1074 Doing Homework
- hdu-1074 Doing Homework
- HDU 1074 Doing Homework
- hdu 1074 Doing Homework
- HDU 1074Doing Homework
- HDU-1074-Doing Homework
- hdu 1074 doing homework
- HDU 1074 Doing Homework
- HDU 1074 Doing Homework
- hdu 【1074】Doing Homework
- ec_shop项目(搭建篇)
- 《当老温遭遇C#》之虚拟主机管理系统 【附核心实现源码】【另可提供中国各大域名服务端接口】[收藏]
- mysql_2
- network: android 网络判断
- Smarty模板技术
- hdu 1074 Doing Homework
- 购物网站
- MySQL
- 在XP上同时运行IE6,IE7,IE8,IE9
- [10月30日的脚本] 在微软Exchange 2010中获取邮箱使用报表
- 保留变量测试
- smarty模板技术
- ec_shop项目(复习篇)
- 验证码画布设计