hdu 1074 状态压缩dp
2015-12-12 02:22
316 查看
//hdu 1074 状态压缩dp #include<stdio.h> #include<stdlib.h> #include<string.h> #include<istream> #include<vector> #include<math.h> #include<stack> #include<algorithm> #define mod 10000009 #define maxn 9999999999 #define long long ll using namespace std; struct Job { char name[205]; int time, dead; }; struct Choose { int min, last,pre,now; }; int main() { //freopen("d:\\in.txt", "r", stdin); //freopen("d:\\inn.txt", "w", stdout); int T; scanf("%d", &T); while (T--) { Choose ch[1 << 15 + 1]; Job job[16]; int t, i,all,j; scanf("%d", &t); all = (1 << t) - 1; //printf("all=%d\n",all); for (i = 1;i <= all;i++) { ch[i].pre = -1; ch[i].min = 99999999999; ch[i].last = 0; ch[i].now = 0; } for (i = 1;i <= t;i++) { scanf("%s%d%d", job[i].name,&job[i].dead, &job[i].time); int y=1<<(i-1),x=job[i].time-job[i].dead; if(x<0) x=0; ch[y].min=x; ch[y].last=job[i].time; ch[y].now=i; } for (i = 1;i <= all;i++) for (j = 0;j < t;j++) { int yy=1<<j; //printf("i=%d yy=%d %d \n",i,yy,i&yy); if ((i&yy)==0) { int ii, jj; ii = ch[i].last + job[j + 1].time - job[j + 1].dead; //printf("ch[%d].last=%d ii=%d \n",i,ch[i].last,ii); if (ii < 0) ii = 0; jj = (1 << j) + i; //printf("ch[%d].min=%d ii=%d + ch[i].min=%d = %d\n",jj,ch[jj].min,ii,ch[i].min,ii+ch[i].min); if (ch[jj].min>ii+ch[i].min) { ch[jj].min = ii+ch[i].min; ch[jj].last = job[j+1].time+ch[i].last; //printf("ch[%d].last=%d job[%d].time=%d+ch[%d].last=%d\n",jj,ch[jj].last,j,job[j].time,i,ch[i].last); ch[jj].pre = i; ch[jj].now = j + 1; } } } //注意搜索是是从小到大,不必要再考虑字典序的问题 printf("%d\n", ch[all].min); stack<int> q; i = all; while (i!= -1) { q.push(ch[i].now); i = ch[i].pre; } while (!q.empty()) { int front = q.top(); q.pop(); printf("%s\n", job[front].name); } } return 0; }
相关文章推荐
- protoc-gen-lua 生成的lua文件提示错误: main function has more than 200 local variables
- 【Django 】Django开发
- C# 使用正则 全字匹配查找替换(Google KeyWord:C# Regex Whole Word Replace)
- protoc-gen-lua中使用 Repeated 标签
- Android学习笔记(16):绝对布局AbsoluteLayout、常用距离单位
- Protobuf-Lua 中使用 Enum
- protoc-gen-lua extensions正确的使用方式
- PCI总线和设备
- Protobuf extensions的理解
- 在WPS中粘帖代码保持代码高亮
- vmware下centos6.7网络配置
- Unity3d获取在Asset中选中的目录、资源 的路径
- 【浙江集训】wander
- lesson3 Qt Signal and slots (QSlider and QProgressBar)
- Json转换
- Json转换
- oracle 11g 手动建库
- Debian8下安装搜狗输入法(fcitx安装)
- php + mysql 调用数据库内容 =》 简介
- 如何用eclipse打jar包