璟雯院

珺璟如晔,雯华若锦

用户工具

站点工具


icpc:problems:luogup2008
problems
名称大朋友的数字
题目编号P2008
题目链接luogu.com.cn/…
来源Luogu
算法分类动态规划, 线性动态规划
难易程度容易

大朋友的数字

想法

由于数字非常小,给每个数字记录,最长不下降子序列的长度tong[]与位置sit[]。对于第i个数,找到比它小的数中最长的,如果有多个长度一样的,取最靠前的。

代码实现

#include<cstdio>
#include<cstring>
 
int sum[20], tong[20], sit[20];
 
int main() {
	memset(tong, -1, sizeof(tong));
	int n, temp;
	scanf("%d", &n);
	for (int i = 0; i < n; ++i) {
		scanf("%d", &temp);
		int mlen = 0, msit, target;
		for (int j = 0; j <= temp; ++j) {
			if(tong[j] == -1)continue;
			if(tong[j] + 1 > mlen || (tong[j] + 1 == mlen && msit > sit[j])){
				mlen = tong[j] + 1;
				target = j;
				msit = sit[j];
			}
		}
		if(mlen) {
			tong[temp] = tong[target] + 1;
			sum[temp] = sum[target] + temp;
		}
		else {
			tong[temp] = 1;
			sum[temp] = temp;
		}
		sit[temp] = i;
		printf("%d ", sum[temp]);
	}
	return 0;
}
/app/www/public/data/pages/icpc/problems/luogup2008.txt · 最后更改: 2024/03/18 16:09 由 温婕莺