码迷,mamicode.com
首页 > 其他好文 > 详细

BZOJ1663: [Usaco2006 Open]赶集

时间:2017-09-04 15:03:12      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:alt   pac   scan   技术分享   using   max   hid   poi   描述   

n<=400个地点第Ai秒会出礼物,给一个邻接矩阵描述地点间的路径耗时,去下一个地点只能走直接相连的路径(不一定最短路),求最多能拿多少。

有点水的DP。。f[i]表示去拿第i个(时间顺序)礼物最多能拿多少,f[i]=max(f[j]+1),其中时间允许从j走到i。

技术分享
 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<stdlib.h>
 4 #include<algorithm>
 5 //#include<iostream>
 6 using namespace std;
 7 
 8 int n;
 9 #define maxn 411
10 struct Point
11 {
12     int t,id;
13     bool operator < (const Point &b) const {return t<b.t;}
14 }a[maxn];
15 int g[maxn][maxn],f[maxn];
16 const int inf=0x3f3f3f3f;
17 int main()
18 {
19     scanf("%d",&n);
20     for (int i=1;i<=n;i++) scanf("%d",&a[a[i].id=i].t);
21     for (int i=1;i<=n;i++)
22         for (int j=1;j<=n;j++)
23             scanf("%d",&g[i][j]);
24     sort(a+1,a+1+n);int ans=0;
25     for (int i=1;i<=n;i++)
26     {
27         if (g[1][a[i].id]<=a[i].t) f[i]=1;else f[i]=-inf;
28         for (int j=1;j<i;j++) if (g[a[j].id][a[i].id]+a[j].t<=a[i].t) f[i]=max(f[i],f[j]+1);
29         ans=max(ans,f[i]);
30     }
31     printf("%d\n",ans);
32     return 0;
33 }
View Code

 

BZOJ1663: [Usaco2006 Open]赶集

标签:alt   pac   scan   技术分享   using   max   hid   poi   描述   

原文地址:http://www.cnblogs.com/Blue233333/p/7473129.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!