标签:遍历
7 5 0 1 1 1 3 1 2 6 1 1 1 2 2 4 8 2 2 4 4 3 3 5 6
23
[Here is one task schedule:
Chore 1 starts at time 0, ends at time 5.
Chore 2 starts at time 5, ends at time 6.
Chore 3 starts at time 6, ends at time 9.
Chore 4 starts at time 5, ends at time 11.
Chore 5 starts at time 11, ends at time 12.
Chore 6 starts at time 11, ends at time 19.
Chore 7 starts at time 19, ends at time 23.
]
题意:你要做家务 有n件家务 一些家务需要在其他家务完成的条件下才能执行
每件 有 需要用时间(t) 需要满足的数量n p1~pn
思路:遍历 每次选最大的时间更新第i件家务的完成时间
选择最大的那个时间
#include <bits/stdc++.h>
using namespace std;
int End[10005];
int tp;
int n;
const int inf=0xffffff;
int main()
{
while(~scanf("%d",&n))
{
memset(End,0,sizeof(End));
int t,np,k;
for(int i = 0; i < n; i++)
{
scanf("%d%d",&t,&np);
int Mi=0;
for(int j=1; j<=np; j++)
{
scanf("%d",&k);
Mi=max(Mi,End[k]);//用时间最大的那个
}
if(Mi==0)
{
End[i+1]=t;
}
else
{
End[i+1]=t+Mi;
}
// printf("%d\n",End[i+1]);
}
int ans=0;
for(int i=1; i<=n; i++)
ans=max(ans,End[i]);
printf("%d\n",ans);
}
}
标签:遍历
原文地址:http://blog.csdn.net/u012349696/article/details/45396229