AOJ.870 MAX 的读书计划
来源:互联网 发布:badusb淘宝 编辑:程序博客网 时间:2024/06/06 17:54
Time Limit: 1000 ms Memory Limit: 50 MBTotal Submission: 8 Submission Accepted: 3
Judge By Case
Description
MAX 很喜欢读书,为了安排自己的读书计划,他会预先把要读的内容做好标记, A B 表
示一个页段,即第 A 到 B 面,当然 A<b,若有两个页段 a-b,b-c,则可以直接记为="" a-c,这样,
他就可以一次看完,现在告诉你 n 个页段,请你帮他求出最长的一条页段,并输出这条页段
的长度和组成它的页段个数。举个例子:
有 6 个页段:
2-7 1-3 3-12 12-20 7-10 4-50
那么连续的页段就有:
1-3, 3-12, 12-20 长度为 20-1+1=20 由 3 个页段组成
2-7, 7-10 长度为 10-2+1=9 由 2 个页段组成
4-50 长度为 50-4+1=47 由 1 个页段组成
那么最长的一条就是第三个,所以结果为 47 1。
需要注意的是:如果有两条不一样的连续的页段长度同时为最大,那么取组成页段数多
的一条.
例子: 1-5,5-10,1-10
输出: 10 2
示一个页段,即第 A 到 B 面,当然 A<b,若有两个页段 a-b,b-c,则可以直接记为="" a-c,这样,
他就可以一次看完,现在告诉你 n 个页段,请你帮他求出最长的一条页段,并输出这条页段
的长度和组成它的页段个数。举个例子:
有 6 个页段:
2-7 1-3 3-12 12-20 7-10 4-50
那么连续的页段就有:
1-3, 3-12, 12-20 长度为 20-1+1=20 由 3 个页段组成
2-7, 7-10 长度为 10-2+1=9 由 2 个页段组成
4-50 长度为 50-4+1=47 由 1 个页段组成
那么最长的一条就是第三个,所以结果为 47 1。
需要注意的是:如果有两条不一样的连续的页段长度同时为最大,那么取组成页段数多
的一条.
例子: 1-5,5-10,1-10
输出: 10 2
Input
文件的第一行为一个整数 n, n<500;
第二行到第 n+1 行,每行两个整数 A B,记录一个页段的信息。 0<=A<b<500< div="">
<b<500
<b<500< div="">
第二行到第 n+1 行,每行两个整数 A B,记录一个页段的信息。 0<=A<b<500< div="">
Output
输出一个整数,即最长的页段的长度和组成它的页段数。
Sample Input
OriginalTransformed71 510 123 102 72 1012 167 9
7[EOL] 1[SP]5[EOL] 10[SP]12[EOL] 3[SP]10[EOL] 2[SP]7[EOL] 2[SP]10[EOL] 12[SP]16[EOL] 7[SP]9[EOF]
Sample Output
OriginalTransformed15 3
15[SP]3[EOL] [EOF]
Hint
1-5 长度为 5 由 1 个页段组成
3-10,10-12,12-16 长度为 14 由 3 个页段组成
2-7,7-9 长度为 8 由 2 个页段组成
2-10,10-12,12-16 长度为 15 由 3 个页段组成
所以输出最长的页段的长度即 15 由 3 个页段组成
【数据规模】
对于 30%的数据
n<20
0<=A<b<500
对于 100%的数据
n<500
0<=A<b<500< div="">
3-10,10-12,12-16 长度为 14 由 3 个页段组成
2-7,7-9 长度为 8 由 2 个页段组成
2-10,10-12,12-16 长度为 15 由 3 个页段组成
所以输出最长的页段的长度即 15 由 3 个页段组成
【数据规模】
对于 30%的数据
n<20
0<=A<b<500
对于 100%的数据
n<500
0<=A<b<500< div="">
<b<500< div="">
#include<cstdio>#include<cmath>#include<cstring>#include<string>#include<iostream>#include<algorithm>#include<vector>//#define DEBUGusing namespace std;const int maxn = 550, INF = 1e9 + 1;int a[maxn][maxn],d[maxn];//d[i]表示到i的最长路int main(){#ifdef DEBUGfreopen("Text.txt", "r", stdin);#endif // DEBUGint n, i, j,end=0, ans1 = 0, ans2,path[maxn];scanf("%d", &n);for (i = 1; i <= n; i++) {int x, y;scanf("%d %d", &x, &y);a[x][y] = y - x + 1;end = max(end, y);}memset(d, 0, sizeof(d));memset(path, 0, sizeof(path));for (i = 0; i <= end; i++) {for (j = 0; j < i; j++) {if (a[j][i]) {if (d[j] != 0) {if (d[i] < d[j] + a[j][i]) {d[i] = d[j] + a[j][i] - 1;path[i] = j;}}else {d[i] = max(d[i], a[j][i]);}}}}//求最长路int a,b;ans2 = 1;for (i = 0; i <= end; i++) {if (d[i] > ans1) ans1 = d[i];}//同长的情况下求最长页段for (i = 0; i <= end; i++) {if (d[i] == ans1) {b = 1, a = i;while (path[a] != 0) {b++;a = path[a];}ans2 = max(ans2, b);}}printf("%d %d\n", ans1, ans2);return 0;}
<b<500< div="">
0 0
- AOJ.870 MAX 的读书计划
- 我的读书计划
- 一生的读书计划
- 一生的读书计划
- 最近的读书计划
- 下半年的读书计划
- 我的读书计划
- 今年的读书计划
- 我的读书计划
- 最近的读书计划
- 2015的读书计划和读书心得
- 别人给的读书计划!
- 一生的读书计划(国人)
- 08年的读书计划
- 我最近的读书计划
- 2010年的读书计划
- 2016年的读书计划
- 2016 - 我的读书计划
- ios开发 之 UIResponder详解
- 安卓自定义标题栏
- Ubuntu下配置samba实现文件夹共享
- 面试系列(四)
- jsonp 读取本地文件
- AOJ.870 MAX 的读书计划
- 逆向
- mongoDBChef连接不上CentOS上的mongodb
- [docker]你不知道的docker奇淫技巧
- 进程管理(上)
- ActivityLifecycleCallbacks
- rex 使用ssh认证
- 设计模式----策略模式
- FreeMarker模板继承