记录编号 |
262141 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[NOIP 2006]作业调度方案 |
最终得分 |
100 |
用户昵称 |
Riolu |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.003 s |
提交时间 |
2016-05-19 19:37:18 |
内存使用 |
0.52 MiB |
显示代码纯文本
- //Riolu 2016-5-19
- #include<iostream>
- #include<cstdio>
- #include<cstring>
- #define N 9999
- using namespace std;
-
- int n,m;
- struct note {
- int shang;
- int gongxu;
- int jihao[21];
- int shijian[21];
- }xinxi[21];
- bool jiqi[21][N];//模拟机器时间
- int muqian[21];
- int shunxu[401];
-
- int fang(int s,int t,int num){
- int flag=1,i;
- for(i=s;i<=t;i++) if(jiqi[num][i])
- {flag=0;break;}
- return flag;
- }
-
- int main()
- {
- freopen("jsp.in","r",stdin);
- freopen("jsp.out","w",stdout);
- int i,j,maxt=0;
- cin>>m>>n;
- for(i=1;i<=m*n;i++) cin>>shunxu[i];
- for(i=1;i<=n;i++) for(j=1;j<=m;j++) cin>>xinxi[i].jihao[j];
- for(i=1;i<=n;i++) for(j=1;j<=m;j++) cin>>xinxi[i].shijian[j];
- for(i=1;i<=n;i++) {xinxi[i].gongxu=0;xinxi[i].shang=0;}
-
- for(i=1;i<=m*n;i++){
- int k=shunxu[i];xinxi[k].gongxu++;
- int num=xinxi[k].jihao[xinxi[k].gongxu];
- int tim=xinxi[k].shijian[xinxi[k].gongxu];
- int flag=1;
- for(j=xinxi[k].shang+1;j+tim-1<=muqian[num];j++)
- if(fang(j,j+tim-1,num)){
- flag=0; xinxi[k].shang=j+tim-1;
- for(int ii=j;ii<=j+tim-1;ii++) jiqi[num][ii]=true;
- break;
- }
- if(flag){
- int start =muqian[num]>xinxi[k].shang?muqian[num]:xinxi[k].shang;
- for(int ii=1;ii<=tim;ii++) jiqi[num][ii+start]=true;
- muqian[num]=tim+start; xinxi[k].shang=muqian[num];
- }
- }
-
- for(i=1;i<=m;i++) maxt= muqian[i]>maxt?muqian[i]:maxt;
- //for(i=1;i<=m;i++) cout<<muqian[i]<<endl;
- cout<<maxt;
- }