zoukankan      html  css  js  c++  java
  • 洛谷P1065 作业调度方案(#9测试点未果)

    eg:

      #include<iostream>
      #include<cstdio>
      #include<string.h>
      int x[10000];		//记录加工步骤 
      int order[30][30];	//记录每个物品的工序顺序 
      int cost[30][30];	//记录每个物品响应工序花费的时间 
      int work[30][10000];	//记录每个机器的加工过程 
      int used[30];	//记录对应物品第几次加工 
      int tim[30];  //统计每行最大长度 
      int last[30]; 	//记录每件物品最后一次出现的地方,该物品下一次加工在其后 
      int mt;		//答案,最长加工时间 
      int doing[30][10000];	//记录该物品在当前时间 是否由其他机器加工 
    
      using namespace std;
      //进行筛查记录 
      void check(int a, int t, int y) {
          if(last[y]==0)
            	last[y]=1;
          for (int i = last[y];i < 10000;i++) {
    	      if (work[a][i] == 0 && doing[y][i] == 0) {
    		      int pd = 0;
    		      for (int j = i + 1;j < i + t;j++)
    		      {
    		            	if (work[a][j] != 0 || doing[y][j] == 1) {
    			            	pd = 1;
    			            	break;
    			      }
    		      }
    		      if (pd == 0) {
    
    			      for (int j = i;j < i + t;j++) {
    				      work[a][j] = y;
    				      doing[y][j] = 1;
    
    			      }
    
    			      if (tim[a] < (i + t - 1))
    			      {
    			            	tim[a] = i + t - 1;
    				      last[y]=tim[a];
    			      }
    				
    			      break;
    		      }
    	      }
          }
      }
      
      int main() {
            	int m, n;
    
          cin >> m >> n;
          //输入处理顺序 
          for (int i = 1;i <= m * n;i++) {	 
    	      cin >> x[i];
          }
          //输入同种工件处理的工序顺序 
          for (int i = 1;i <= n;i++) {
    	for (int j = 1;j <= m;j++) {
    		cin >> order[i][j];
    	}
    }
    //输入各个工件对应工序所花时间 
    for (int i = 1;i <= n;i++) {
    	for (int j = 1;j <= m;j++) {
    		cin >> cost[i][j];
    	}
    }
    for (int i = 1;i <= m * n;i++) {
    	used[x[i]]++;  //当前处理工件工序 
    	check(order[x[i]][used[x[i]]], cost[x[i]][used[x[i]]], x[i]);
    
    }
    
    //比较各个机器中所花最长时间,即为答案 
    for (int i = 1;i <= m;i++) {
    	if (mt < tim[i])
    		mt = tim[i];
    }
    cout << mt;
    
    return 0;
      }
  • 相关阅读:
    二叉树操作
    jQuery下拉列表插件 jQselectable
    DeDeCMS常用标签代码整理汇总
    用DEDECMS做手机网站
    DedeCMS模板文件结构
    用aspnet_compiler编译(发布)网站
    把网站提交到搜索引擎
    jGrowl 制作消息弹出框
    关于标签 XUACompatible
    jQuery下拉框插件 FlexBox
  • 原文地址:https://www.cnblogs.com/Auterman/p/13542023.html
Copyright © 2011-2022 走看看