六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 32|回复: 0

【最长递增子序列O(nlgn)算法】HDU 1025

[复制链接]

升级  68.4%

272

主题

272

主题

272

主题

进士

Rank: 4

积分
842
 楼主| 发表于 2013-1-26 12:34:25 | 显示全部楼层 |阅读模式
http://acm.hdu.edu.cn/showproblem.php?pid=1025

很难说清楚,自己模拟几下就会慢慢明白,模板题
求的是最长递增子序列的长度


#include <iostream>#include <algorithm>#include <string>//#include <map>#include <queue>#include <vector>#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>//#include <ctime>#include <ctype.h>using namespace std;#define LL __int64#define inf 0x3fffffff#define M 500005int v[M];int main(){int n, i, tv, x, cc = 1, top;while (~scanf ("%d", &n)){memset (v, 0, sizeof(v));for (i = 0; i < n; i++){scanf ("%d%d", &x, &tv);v[x-1] = tv;}/********************模板********************/top = 0;for (i = 0; i < n; i++){int *p = lower_bound (v, v+top, v);if (p - v == top)++top;*p = v;}/********************模板********************/printf ("Case %d:\n", cc++);if (top <= 1)printf ("My king, at most %d road can be built.\n\n", top);elseprintf ("My king, at most %d roads can be built.\n\n", top);}    return 0;}
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表