航线设置(dp)
来源:互联网 发布:java 数组长度限制 编辑:程序博客网 时间:2024/05/16 23:55
问题描述
在美丽的莱茵河畔,每边都分布着N个城市,两边的城市都是唯一对应的友好城市,现需要在友好城市间开通航线以加强往来,但因为莱茵河常年大雾,如果开设的航线发生交叉就有可能出现碰船的现象。现在要求尽可能多地开通航线并且使航线不能相交。
输入
有若干组测试数据,每组测试数据的第一行是一个整数n,它表示每边都分布着n个城市(1<=n<=1000)。接着有n行,每一行有2个整数s,t,之间有一个空格,s表示起点城市,t表示终点城市。
输出
对每组测试数据,首先在一行上输出“Case #:”,其中“#”为测试数据组号,从1开始编号。接着在下一行输出“The Maximal number is:”,紧跟着输出这些城市间不相交的最大的航线数。
输入样例:
4
1 2
2 4
3 1
4 3
输出样例:
Case 1:
The Maximal number is:2
思路:数据结构:a[s]=t;//表示s开往t
状态:d[i]:=以第a[i]个城市为结尾的最大航线数;
状态转移方程:d[i]={d[i],d[j]+1|j<i且a[j]<a[i]}
则结果为最大的d[i];
代码:
#include <bits/stdc++.h>using namespace std;const int maxn=1001;int a[maxn],d[maxn];int n,ans,s,t; int main(){ while (scanf("%d",&n)) {for (int i = 1; i <= n; i++) {scanf("%d%d",&s,&t);a[s]=t;}ans=0;for(int i=1;i<=n;i++){ d[i]=1; for(int j=1;j<i;j++) if(a[j]<a[i])//核心判断 d[i]=max(d[i],d[j]+1);ans=max(ans,d[i]);}printf("%d\n",ans);}return 0;}
阅读全文
1 0
- 航线设置(dp)
- 航线设置
- 航线设置
- 航线设计 (序列DP)
- 动态规划解决航线设置问题
- 一中OJ #1438 航线设计 | LIS 序列DP | 解题报告
- UVa Problem 10075 Airlines (航线)
- [BZOJ1969][Ahoi2005]LANE 航线规划(树链剖分)
- 楚楚街2016招聘笔试(航线)
- 航线规划(离线+路径压缩)
- Codevs5288 航线设计(动态规划加强版) 解题报告
- [BZOJ1969][Ahoi2005]LANE 航线规划(树链剖分+并查集)
- QGroundControl任意多边形航线规划(植保作业)
- dijkstra拓展(规划最短航线问题)
- 航线设计
- 航线--dijkstra
- 动态规划: 航线设置 (求最大升序长…
- 动态规划5:求解最多航线问题(应用了最长子序列知识)
- Trident exactly once实现原理
- 2055来淄博旅游
- springmvc+json+ajax遇到404错误
- Linux Shell脚本执行方式
- IDEA工具创建Maven项目管理并配置settings.xml
- 航线设置(dp)
- Matlab Tools for Network Analysis 网络分析工具包 (2006-2011)
- 初学opencv/基本操作
- 七、负载均衡-Ribbon 如何对负载均衡策略进行扩展
- Professional JS(try-catch续/Node/Document类型)
- RSA加解密应用
- hdoj 1072 Nightmare 广搜
- 猴子吃桃问题
- 常用 SQL Server 规范集锦