P1065 [NOIP2006 提高组] 作业调度方案
模拟题,要命。。。
P1065 [NOIP2006 提高组] 作业调度方案 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
题目大意:
输入m,n表示,有m台机器,n个工件,每个工件有m道工序
输入n*m个数据,表示处理顺序
输入n行,每行m个数据,表示,每个工序用哪个机器处理
输入n行,每行m个数据,表示,每个工序所用的时间
求处理完所有的工件所用的时间
约束条件:
-
对同一个工件,每道工序必须在它前面的工序完成后才能开始;
-
同一时刻每一台机器至多只能加工一个工件
还要注意,“安排顺序”只要求按照给定的顺序安排每个操作。不一定是各机器上的实际操作顺序。在具体实施时,有可能排在后面的某个操作比前面的某个操作先完成。、
模拟题中材料分析和细节把控十分重要,是有用信息归纳,再有完整思维导图,再反映到代码的过程
检查技巧:若逻辑全部正确,推敲过后仍合理,可以看看for循环中的赋值细节是否有问题
宁可代码打的慢些,也要保证准确性,否则后期排查极为麻烦,贻害无穷!
1 //P1065 [NOIP2006 提高组] 作业调度方案 2 #include<iostream> 3 #include<algorithm> 4 using namespace std; 5 const int maxn=50; 6 int n,m; 7 int line[maxn*maxn];//工作顺序 8 int workline[maxn][maxn];//处于某工序时,由某台机器处理 9 int worktime[maxn][maxn];//某工序的处理时间 10 int gx[maxn];//工序记录 11 int lasttime[maxn];//上个工序的结束时间 12 bool zz[maxn*maxn][maxn*maxn];//某机器在当前时刻是否在工作,扫描用 13 int ans=0; 14 bool miao(int l,int h,int num) 15 { 16 //检查时间段内是否都未被标记 17 for(int i=l;i<=h;i++) 18 { 19 if(zz[num][i]) 20 return false; 21 } 22 return true; 23 } 24 int main() 25 { 26 cin>>m>>n; 27 for(int i=1;i<=n*m;i++) 28 { 29 cin>>line[i]; 30 } 31 for(int i=1;i<=n;i++) 32 { 33 for(int j=1;j<=m;j++) 34 cin>>workline[i][j]; 35 } 36 for(int i=1;i<=n;i++) 37 { 38 for(int j=1;j<=m;j++) 39 cin>>worktime[i][j]; 40 } 41 for(int i=1;i<=n*m;i++) 42 { 43 int a=line[i];//要处理哪个 44 gx[a]++;//工序记录 45 int nowrb=workline[a][gx[a]];//机器记录 46 int nowt=worktime[a][gx[a]];//时间记录 47 for(int t=lasttime[a]+1;;t++)//扫描时间轴 48 { 49 if(miao(t,t+nowt-1,nowrb)) 50 { 51 //标记时间段 52 for(int j=t;j<=t+nowt-1;j++) 53 { 54 zz[nowrb][j]=true; 55 } 56 //记录结束时间 57 lasttime[a]=t+nowt-1; 58 break; 59 } 60 } 61 } 62 //寻找最大的结束时间 63 for(int i=1;i<=n;i++) 64 { 65 ans=max(ans,lasttime[i]); 66 } 67 cout<<ans<<endl; 68 return 0; 69 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!