记录编号 262141 评测结果 AAAAAAAAAA
题目名称 [NOIP 2006]作业调度方案 最终得分 100
用户昵称 GravatarRiolu 是否通过 通过
代码语言 C++ 运行时间 0.003 s
提交时间 2016-05-19 19:37:18 内存使用 0.52 MiB
显示代码纯文本
  1. //Riolu 2016-5-19
  2. #include<iostream>
  3. #include<cstdio>
  4. #include<cstring>
  5. #define N 9999
  6. using namespace std;
  7.  
  8. int n,m;
  9. struct note {
  10. int shang;
  11. int gongxu;
  12. int jihao[21];
  13. int shijian[21];
  14. }xinxi[21];
  15. bool jiqi[21][N];//模拟机器时间
  16. int muqian[21];
  17. int shunxu[401];
  18.  
  19. int fang(int s,int t,int num){
  20. int flag=1,i;
  21. for(i=s;i<=t;i++) if(jiqi[num][i])
  22. {flag=0;break;}
  23. return flag;
  24. }
  25. int main()
  26. {
  27. freopen("jsp.in","r",stdin);
  28. freopen("jsp.out","w",stdout);
  29. int i,j,maxt=0;
  30. cin>>m>>n;
  31. for(i=1;i<=m*n;i++) cin>>shunxu[i];
  32. for(i=1;i<=n;i++) for(j=1;j<=m;j++) cin>>xinxi[i].jihao[j];
  33. for(i=1;i<=n;i++) for(j=1;j<=m;j++) cin>>xinxi[i].shijian[j];
  34. for(i=1;i<=n;i++) {xinxi[i].gongxu=0;xinxi[i].shang=0;}
  35. for(i=1;i<=m*n;i++){
  36. int k=shunxu[i];xinxi[k].gongxu++;
  37. int num=xinxi[k].jihao[xinxi[k].gongxu];
  38. int tim=xinxi[k].shijian[xinxi[k].gongxu];
  39. int flag=1;
  40. for(j=xinxi[k].shang+1;j+tim-1<=muqian[num];j++)
  41. if(fang(j,j+tim-1,num)){
  42. flag=0; xinxi[k].shang=j+tim-1;
  43. for(int ii=j;ii<=j+tim-1;ii++) jiqi[num][ii]=true;
  44. break;
  45. }
  46. if(flag){
  47. int start =muqian[num]>xinxi[k].shang?muqian[num]:xinxi[k].shang;
  48. for(int ii=1;ii<=tim;ii++) jiqi[num][ii+start]=true;
  49. muqian[num]=tim+start; xinxi[k].shang=muqian[num];
  50. }
  51. }
  52. for(i=1;i<=m;i++) maxt= muqian[i]>maxt?muqian[i]:maxt;
  53. //for(i=1;i<=m;i++) cout<<muqian[i]<<endl;
  54. cout<<maxt;
  55. }