HDU 1025 Constructing Roads In JGShining's Kingdom
2015-02-17 20:34
399 查看
这题就是最长上升子序列.两个序列存在结构体里,先按第一关键字排序。然后对第二关键字求最长上升子序列。
#include <iostream> #include <cstring> #include <cstdio> #include <algorithm> using namespace std; struct P { int x,y; }; bool comp(P a, P b) { return a.x<b.x; } int dp[500100]; P a[500100]; int main() { int n ,flag =1; while(~scanf("%d",&n)) { for(int i = 0 ; i < n ; i++) { scanf("%d%d",&a[i].x,&a[i].y); } memset(dp,0,sizeof(0)); sort(a,a+n,comp); int j,k; j = 0; for(int i = 0 ; i < n ; i++) { for(k = j ; k >=0 ; k--) { if(dp[k]<a[i].y) { dp[++k] = a[i].y; break; } } j = max (j,k); } printf("Case %d:\n",flag++); if(j == 1) printf("My king, at most 1 road can be built.\n\n"); else printf("My king, at most %d roads can be built.\n\n",j); } return 0; }
相关文章推荐
- 【HDU】1025 - Constructing Roads In JGShining's Kingdom(LIS & 深坑)
- hdu 1025 Constructing Roads In JGShining's Kingdom(最长上升子序列nlogn算法)
- HDU_1025_Constructing Roads In JGShining's Kingdom
- HDU 1025 Constructing Roads In JGShining's Kingdom(LIS的O(nlogn)算法)
- hdu 1025 Constructing Roads In JGShining's Kingdom
- hdu 1025 Constructing Roads In JGShining's Kingdom
- hdu 1025 Constructing Roads In JGShining's Kingdom--最长上升子串(时间优化)
- HDU:1025 Constructing Roads In JGShining's Kingdom(LIS-n*logn解法+思维)
- hdu 1025 Constructing Roads In JGShining's Kingdom(lis)
- HDU 1025 Constructing Roads In JGShining's Kingdom
- HDU 1025 Constructing Roads In JGShining's Kingdom(LIS最长上升子序列)
- HDU 1025 Constructing Roads In JGShining's Kingdom
- hdu 1025 Constructing Roads In JGShining's Kingdom (LIS)
- 【DP】HDU 1025 Constructing Roads In JGShining's Kingdom 最长上升子序列
- hdu 1025 Constructing Roads In JGShining’s Kingdom 【dp+二分法】
- HDU 1025 Constructing Roads In JGShining's Kingdom(DP,LIS最长上升子序列)
- HDU 1025 Constructing Roads In JGShining's Kingdom
- Hdu 1025 - Constructing Roads In JGShining's Kingdom
- HDU 1025 Constructing Roads In JGShining's Kingdom(动态规划)
- HDU 1025 Constructing Roads In JGShining's Kingdom