设为首页 加入收藏

TOP

SGU 199. Beautiful People 二维LIS
2015-07-20 17:37:58 来源: 作者: 【 】 浏览:2
Tags:SGU 199. Beautiful People 二维 LIS

第一维排序 第二维LIS

#include 
  
   
#include 
   
     #include 
    
      using namespace std; int dp[100010]; int p[100010]; struct node { int x, y, id; }a[100010]; bool cmp(node a, node b) { if(a.x != b.x) return a.x < b.x; return a.y > b.y; } void print(int x) { if(p[x] == -1) { printf("%d", a[x].id); return; } print(p[x]); printf(" %d", a[x].id); } int main() { int n; while(scanf("%d", &n) != EOF) { memset(dp, -1, sizeof(dp)); memset(p, -1, sizeof(p)); for(int i = 1; i <= n; i++) { scanf("%d %d", &a[i].x, &a[i].y); a[i].id = i; } sort(a+1, a+n+1, cmp); dp[1] = 1; int len = 1; for(int i = 2; i <= n; i++) { int l = 1, r = len; while(l <= r) { int m = (l + r) >> 1; if(a[dp[m]].y < a[i].y) l = m+1; else r = m-1; } dp[l] = i; p[i] = dp[l-1]; if(l > len) len = l; } //sort(dp+1, dp+len+1); printf("%d\n", len); print(dp[len]); puts(""); } return 0; }
    
   
  


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇HDU 5033 Building (单调栈) 下一篇HDOJ 5019 Revenge of GCD

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·数据库:推荐几款 Re (2025-12-25 12:17:11)
·如何最简单、通俗地 (2025-12-25 12:17:09)
·什么是Redis?为什么 (2025-12-25 12:17:06)
·对于一个想入坑Linux (2025-12-25 11:49:07)
·Linux 怎么读? (2025-12-25 11:49:04)