记录编号 |
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;
}