⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bridging signals(dp(nlogn)).cpp

📁 杭电acm解题报告2001---2099.
💻 CPP
字号:
#include <cstdio>
#include <string>
#define NMAX 40100
int p,n;
int seq[NMAX];
int len[NMAX];
int dp[NMAX];

int main()
{
	int i,j;
	scanf("%d", &n);
	while (n --) {
		scanf("%d", &p);
		for (i=1;i<=p;i++) {
			scanf("%d", seq+i);
		}
		dp[0] = dp[1] = 1;
		len[0] = -1;
		len[1] = seq[1];
		int mmax = 1;
		for (i=2;i<=p;i++) {
			dp[i] = 1;
			len[i] = INT_MAX;
			int left = 0, right = mmax;
			while (right >= left) {
				int mid = (left + right) / 2;
				if (seq[i] > len[mid]) {
					left = mid+1;
				}
				else {
					right = mid-1;
				}
			}
			dp[i] = left;
			if (seq[i] < len[ dp[i] ]) {
				len[ dp[i] ] = seq[i];
			}
			mmax = mmax > dp[i] ? mmax : dp[i];
		}//for i
		printf("%d\n", mmax);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -