HDU 1025

来源:互联网 发布:图片提取文字软件 编辑:程序博客网 时间:2024/05/16 17:09

不管你用什么东西 只要能把最大上升子序列的复杂度降到 (nlogn) 就行

#include <iostream>#include <cstring>#include <algorithm>#include <cmath>using namespace std;const int maxn = 5e5 + 10;int a[maxn] = {0};int d[maxn] = {0};int n;int cas = 1;int main () {    ios_base :: sync_with_stdio(false);    while (cin >> n) {        for (int i = 1; i <= n; ++ i) {            int x,y;            cin >> x >> y;            a[x] = y;        }        int len = 0;        d[len ++] = a[1];        for (int i = 2;i <= n; ++ i) {            if (a[i] > d[len - 1]) {                d[len ++] = a[i];            }            else {                int u = lower_bound (d,d + len,a[i]) - d;                d[u] = a[i];            }        }        cout << "Case " << cas ++ << ":" << endl;        if (len == 1) {            cout << "My king, at most 1 road can be built." << endl;        }        else {            cout << "My king, at most " << len <<" roads can be built." << endl;        }        cout << endl;    }    return 0;}