您的位置:首页 > 其它

POJ 1949 DP?

2016-08-26 10:15 295 查看

题意:
有n个家务,第i个家务需要一定时间来完成,并且第i个任务必须在它 “前面的” 某些任务完成之后才能开始。

给你任务信息,问你最短需要多少时间来完成任务。

输入:
第一行n个家务
第2~n+1行:每行第一个数字:完成这件家务所用的时间。
第二个数字:需要前面几个家务才能做这件。
随后是家务的编号

思路:

chore K (K > 1) can have only chores 1,.K-1 as prerequisites
这不就成超级无敌大水题了嘛。
每回找到编号前面的最大值。 更新一下就OK了。

// by SiriusRen
#include <cstdio>
#include <algorithm>
using namespace std;
int n,time[10005],jy,xx,ans=0;
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&time[i]);
scanf("%d",&jy);
int temp=0;
while(jy--)
scanf("%d",&xx),temp=max(time[xx],temp);
time[i]+=temp;
}
for(int i=1;i<=n;i++)ans=max(ans,time[i]);
printf("%d\n",ans);
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: