BZOJ1663: [Usaco2006 Open]赶集

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 }

时间: 2024-10-10 14:19:45

BZOJ1663: [Usaco2006 Open]赶集的相关文章

【动态规划】bzoj1663 [Usaco2006 Open]赶集

http://blog.csdn.net/u011265346/article/details/44906469 #include<cstdio> #include<algorithm> using namespace std; #define N 401 struct Point{int p,v;}a[N]; bool operator < (const Point &a,const Point &b){return a.v<b.v;} int n,m

bzoj1663 [Usaco2006 Open]赶集 (最短路)

Description 每一年,约翰都会带着他的奶牛们去赶集.集会中一共有N(1≤N≤400)个商店,第i个商店会在特定的时间Pi(0≤Pi≤109)对当时在店里的顾客送出一份精美的礼物.约翰当然得到了这个消息,于是他希望能拿到尽量多的礼物送给他的奶牛们.也就是说,他想尽可能多地在某商店发放礼物的时候,正好呆在店里. 经过一定的调查,约翰弄清楚了从i号商店走到J号商店所需要的时间Ti,j(1≤Ti,j≤1000000).虽然乡间小路奇特的布局使得从i号商店走到j号商店的最短路不一定是直接连接这两

[BZOJ1663] [Usaco2006 Open]赶集(spfa最长路)

传送门 按照时间t排序 如果 t[i] + map[i][j] <= t[j],就在i和j之间连一条边 然后spfa找最长路 #include <queue> #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #define N 401 using namespace std; int n, ans, cnt; int a[N][N],

[BZOJ1717][Usaco2006 Dec]Milk Patterns 产奶的模式

1717: [Usaco2006 Dec]Milk Patterns 产奶的模式 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 1297  Solved: 705 [Submit][Status][Discuss] Description 农夫John发现他的奶牛产奶的质量一直在变动.经过细致的调查,他发现:虽然他不能预见明天产奶的质量,但连续的若干天的质量有很多重叠.我们称之为一个"模式". John的牛奶按质量可以被赋予一个0到100

BZOJ1725: [Usaco2006 Nov]Corn Fields牧场的安排

1725: [Usaco2006 Nov]Corn Fields牧场的安排 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 400  Solved: 290[Submit][Status] Description Farmer John新买了一块长方形的牧场,这块牧场被划分成M列N行(1<=M<=12; 1<=N<=12),每一格都是一块正方形的土地.FJ打算在牧场上的某几格土地里种上美味的草,供他的奶牛们享用.遗憾的是,有些土地相当的贫

赶集网mysql开发36条军规

写在前面的话: 总是在灾难发生后,才想起容灾的重要性: 总是在吃过亏后,才记得曾经有人提醒过. (一)核心军规 (1)不在数据库做运算 cpu计算务必移至业务层: (2)控制单表数据量 int型不超过1000w,含char则不超过500w: 合理分表: 限制单库表数量在300以内: (3)控制列数量 字段少而精,字段数建议在20以内: (4)平衡范式与冗余 效率优先: 往往牺牲范式: (5)拒绝3B 拒绝大sql语句:big sql 拒绝大事物:big transaction 拒绝大批量:big

bzoj1664[Usaco2006 Open]County Fair Events 参加节日庆祝*

bzoj1664[Usaco2006 Open]County Fair Events 参加节日庆祝 题意: 有N个节日,每个节日有个开始时间,及持续时间.牛想尽可能多的参加节日,问最多可以参加多少.注意牛的转移速度是极快的,不花时间,且节日必须完整参加.N≤10000,开始时刻和持续时间≤100000. 题解: dp.设f[i]表示i时刻到最后时刻最多可以参加多少节日.则f[i]=max(f[i+1],f[range[j].r+1],j为时刻i开始的节日). 代码: 1 #include <cs

bzoj1650[Usaco2006 Dec]River Hopscotch 跳石子*

bzoj1650[Usaco2006 Dec]River Hopscotch 跳石子 题意: 数轴上有n个石子,第i个石头的坐标为Di,现在要从0跳到L,每次跳都从一个石子跳到相邻的下一个石子.现在问移走这M个石子后,相邻两个石子及0到最前一个石子及最后一个石子到L距离的最小值的最大值是多少.n≤50000 题解: 为什么有NOIP2015即视感~二分距离最小值,然后如果当前石子和上一个石子相差小于二分值就将这个石子移走,如果位置L与上一个石子相差小于二分值,此时若还没有移满M个且有没移走的石子

bzoj1726 [Usaco2006 Nov]Roadblocks第二短路

1726: [Usaco2006 Nov]Roadblocks第二短路 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 826  Solved: 394[Submit][Status] Description 贝茜把家搬到了一个小农场,但她常常回到FJ的农场去拜访她的朋友.贝茜很喜欢路边的风景,不想那么快地结束她的旅途,于是她每次回农场,都会选择第二短的路径,而不象我们所习惯的那样,选择最短路. 贝茜所在的乡村有R(1<=R<=100,000)条双向